C# Websocket-Sharp - 如何识别客户端
C# Websocket-Sharp - how to identify clients
我使用 websocket-sharp (https://github.com/sta/websocket-sharp)(仅限服务器端)。
我可以将许多客户端应用程序连接到我的 websocket 服务器。每个客户端发送一个 ID(我们称之为 CLIENT_ID
)。
我想知道哪个 websocket 会话与 CLIENT_ID
相关。
IWebSocketSession
公开 ID
(我们称它为 SESSION_ID
)。
我试过的:
首先,我有一个存储空间 class,它存储每个 SESSION_ID
他的 CLIENT_ID
(一个简单的字典)。
当我收到来自客户端应用程序的消息时,我将 SESSION_ID
和 CLIENT_ID
存储在我的字典中。
因此,当我想向具有 CLIENT_ID == XXX
的所有会话发送消息时,我可以使用这本词典。这很好用...
但会话只是暂时的。一个客户端可以使用多个会话。因此,对于单个客户,我的字典中很快就会有很多输入。当我向字典中具有 CLIENT_ID == XXX
的所有会话发送一条消息时,我将向同一客户端多次发送相同的消息。
我的问题是: 如何使用 websocket-sharp 注册唯一客户端?我应该使用哪个 属性?
编辑: 即使使用唯一的客户端,它也会每 20 秒更改一次会话 ID。这可能是为 ping 创建的新会话。
好的,因为我什么也没找到,所以我保留了 SESSION_ID
但是当我在我的字典中注册一个新项目时 (SESSION_ID
=> CLIENT_ID
) 我必须手动删除所有 "old sessions".
这可以通过检查 session.State == WebSocketState.Open
.
来完成
虽然不完美,但确实有效。
我使用 websocket-sharp (https://github.com/sta/websocket-sharp)(仅限服务器端)。
我可以将许多客户端应用程序连接到我的 websocket 服务器。每个客户端发送一个 ID(我们称之为 CLIENT_ID
)。
我想知道哪个 websocket 会话与 CLIENT_ID
相关。
IWebSocketSession
公开 ID
(我们称它为 SESSION_ID
)。
我试过的:
首先,我有一个存储空间 class,它存储每个 SESSION_ID
他的 CLIENT_ID
(一个简单的字典)。
当我收到来自客户端应用程序的消息时,我将 SESSION_ID
和 CLIENT_ID
存储在我的字典中。
因此,当我想向具有 CLIENT_ID == XXX
的所有会话发送消息时,我可以使用这本词典。这很好用...
但会话只是暂时的。一个客户端可以使用多个会话。因此,对于单个客户,我的字典中很快就会有很多输入。当我向字典中具有 CLIENT_ID == XXX
的所有会话发送一条消息时,我将向同一客户端多次发送相同的消息。
我的问题是: 如何使用 websocket-sharp 注册唯一客户端?我应该使用哪个 属性?
编辑: 即使使用唯一的客户端,它也会每 20 秒更改一次会话 ID。这可能是为 ping 创建的新会话。
好的,因为我什么也没找到,所以我保留了 SESSION_ID
但是当我在我的字典中注册一个新项目时 (SESSION_ID
=> CLIENT_ID
) 我必须手动删除所有 "old sessions".
这可以通过检查 session.State == WebSocketState.Open
.
虽然不完美,但确实有效。