我正在编写类似于 GTalk 的网络聊天应用程序。它基于 Orbited + Sinatra 的客户端,和 Ruby 的服务器端。我已经实现了所有协议,一切正常。但。我遇到了一个问题 - 如果一个用户有多个连接,我不知道如何处理。例如,我从 2 个不同的浏览器登录聊天。谷歌处理得非常好,两个聊天似乎完全一样。但是我的应用只在联系人列表中显示了 2 个完全相同的用户,这是不正确的。
这是服务器客户端池的一个小示例:
Server
--> Connections
|
- Client (User Information, ConnectionID)
- Client (User Information, ConnectionID)
....
- Client (...)
我有两种类型的消息:私人(用户对用户)、公共(用户对会议)。
我想弄清楚如何处理这种情况?有什么建议么?