C#Websocket-Sharp - 如何识别客户

时间:2015-04-29 10:18:34

标签: c# websocket websocket-sharp

我使用websocket-sharp(https://github.com/sta/websocket-sharp)(仅限服务方)。

我可以将许多客户端应用程序连接到我的websocket服务器。每个客户发送一个ID(让我们称之为CLIENT_ID)。

我想知道哪个websocket会话与CLIENT_ID相关。

IWebSocketSession公开ID(让我们称之为SESSION_ID)。

我尝试了什么:

首先,我有一个存储类,存储每个SESSION_ID他的CLIENT_ID(一个简单的字典)。

当我从客户端应用程序收到消息时,我将SESSION_IDCLIENT_ID存储在我的字典中。

因此,当我想向所有具有CLIENT_ID == XXX的会话发送消息时,我可以使用此词典。这很好用......

但会话只是暂时的。客户端可以使用多个会话。因此对于单个客户端,我很快就会在字典中输入很多内容。当我向CLIENT_ID == XXX的词典中的所有会话发送消息时,我会多次向同一个客户端发送相同的消息。

我的问题是:如何使用websocket-sharp注册唯一的客户端?我应该使用哪个属性?

编辑:即使使用唯一的客户端,也会每20秒更改一次会话ID。它可能是为ping创建的新会话。

1 个答案:

答案 0 :(得分:1)

好吧,因为我什么也没找到,我保留了SESSION_ID但是当我在字典中注册一个新项目时(SESSION_ID => CLIENT_ID)我必须手动删除所有“旧会话” ”

这可以通过检查session.State == WebSocketState.Open

来完成

它不完美但它有效。