WebSocket服务器的最佳实践是什么?

时间:2010-12-11 08:13:44

标签: javascript node.js websocket

假设您有一个用户可以打开聊天室的网站。一旦房间打开,用户可以邀请其他人聊天。

让我们假装你想使用WebSockets与客户进行通信。 在大多数服务器端WebSocket实现中,有一个简单的函数,如connection.broadcast(message),它向所有连接的主机发送消息,但不向发起广播的主机发送消息。这是一个很棒的功能,因为您不需要为自己保留所有客户端的列表,以保持更新。聊天室示例的问题在于,在这种情况下,您不希望向每个人广播每条消息,而只是向同一房间中的其他客户端广播。

这让我有两个选择:

  • 滚动我自己的broadcastToRoom(room_id)功能,这反过来意味着跟踪所有客户和房间。
  • 每次创建新房间时,都会生成服务器的新实例(在新端口上)。

你会做什么?

1 个答案:

答案 0 :(得分:5)

为每个房间滚动自己的broadcast版本,保留该房间中的用户列表,如果有人在该房间内发送消息,只需将其发送给房间内的所有用户,根据您的协议,您可以排除邮件的原始发件人。

无论如何,每个房间都有一个用户列表,因此您只需将连接作为属性添加到用户对象。

但请记住,由于最近“发现”当前WebSocket规范的安全问题,Opera和Mozilla都已禁用对WebSocket的支持,直到发布新版本为止。因此,WebSockets需要更多时间才能获得广泛的可用性,并且需要将服务器需要更改为新版本。

详情请见:
http://hacks.mozilla.org/2010/12/websockets-disabled-in-firefox-4/
http://blog.pusherapp.com/2010/12/9/it-s-not-websockets-it-s-your-broken-proxy