【发布时间】:2015-12-25 07:39:20
【问题描述】:
我必须使用 websocket 实现一个聊天应用程序,用户将通过组聊天,可以有数千个组,一个用户可以在多个组中。我正在考虑两种解决方案:
[1] 对于每个群聊,我创建了一个 websocket 端点(使用 camel-atmosphere-websocket),同一组中的用户可以订阅该组端点并通过该端点发送/接收消息。这意味着可能有数千个 websocket 端点。客户端(比如说 iPhone)必须订阅多个 wbesocket 端点。这是一个好习惯吗?
[2] 我只是为所有组创建一个 websocket 端点。客户端只订阅这个端点,我自己管理服务器上的消息分发:获取组成员,从连接的 websocket 列表中选择每个成员的 websocket,然后通过 websocket 将消息写入每个成员。
哪种解决方案在性能方面更好并且易于在客户端和服务器上实现?
谢谢。
编辑 2015-10-06
我选择了第二种方法,并用jetty websocket客户端做了一个测试,我在服务器端使用骆驼氛围websocket。在客户端,我在线程中创建到服务器的 websocket 连接。码头有一个问题,我只能创建大约 160 个 websocket 连接(这意味着大约 160 个线程)。结果是,当客户端数量从 1 增加到 160 时,我几乎看不出有什么区别。
是的,160并不是一个很大的数字,但我想当我真正看到性能问题时我会做更多的测试,目前,我可以使用第二种方法。
如果你对测试代码感兴趣,这里是: http://www.eclipse.org/jetty/documentation/current/jetty-websocket-client-api.html#d0e22545
【问题讨论】:
标签: performance websocket atmosphere