我使用websocket( https://github.com/sta/websocket-sharp )(仅服务侧).
我可以让许多客户端应用程序连接到我的websocket服务器。每个客户端发送一个ID (让我们称之为CLIENT_ID)。
我想知道哪个websocket会话与CLIENT_ID相关。
IWebSocketSession公开ID (让我们称之为SESSION_ID)。
我尝试过的:
首先,我有一个存储类,它存储每个SESSION_ID的CLIENT_ID (一个简单的字典)。
当我收到来自客户端应用程序的消息时,我将SESSION_ID和CLIENT_ID存储在我的字典中。
因此,当我想向所有具有CLIENT_ID == XXX的会话发送消息时,我可以使用该字典。这个很好..。
,但会话只是临时的。客户端可以使用多个会话。因此,对于单个客户端,我很快就会在我的字典中得到许多输入。当我向具有CLIENT_ID == XXX的字典中的所有会话发送一条消息时,我将多次向同一个客户端发送相同的消息。
,我的问题是:如何用websocket注册唯一的客户?我应该使用哪一种财产?
编辑:,即使有一个独特的客户端,它每20分钟就会更改一次会话的ID。它可能是为ping创建的一个新会话。
发布于 2015-04-29 13:45:27
好的,因为我什么也没有找到,所以我保留了SESSION_ID,但是当我在字典中注册一个新条目(SESSION_ID => CLIENT_ID)时,我必须手动删除所有的“旧会话”。
这可以通过检查是否session.State == WebSocketState.Open来完成。
这并不完美,但很有效。
https://stackoverflow.com/questions/29940823
复制相似问题