4

我使用 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 创建的新会话。

4

1 回答 1

1

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

这可以通过检查 if 来完成session.State == WebSocketState.Open

它并不完美,但它有效。

于 2015-04-29T13:45:27.077 回答