我使用websocket-sharp(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-sharp注册唯一的客户端?我应该使用哪个属性?
编辑:即使使用唯一的客户端,也会每20秒更改一次会话ID。它可能是为ping创建的新会话。
答案 0 :(得分:1)
好吧,因为我什么也没找到,我保留了SESSION_ID
但是当我在字典中注册一个新项目时(SESSION_ID
=> CLIENT_ID
)我必须手动删除所有“旧会话” ”
这可以通过检查session.State == WebSocketState.Open
。
它不完美但它有效。