Я использую websocket-sharp ( https://github.com/sta/websocket-sharp) ( только со стороны сервера).
У меня может быть много клиентских приложений, подключенных к моему серверу веб-сокетов. Каждый клиент отправляет идентификатор (назовем его CLIENT_ID
).
Я хочу знать, какой сеанс веб-сокета связан с CLIENT_ID
.
IWebSocketSession
выставить ID
(назовем его SESSION_ID
).
Что я пробовал:
Во-первых, у меня есть класс хранения, который хранит для каждого SESSION_ID
его CLIENT_ID
(простой словарь).
Когда я получаю сообщение от клиентского приложения, я сохраняю SESSION_ID
и CLIENT_ID
в своем словаре.
Поэтому, когда я хочу отправить сообщение всем сеансам, имеющим CLIENT_ID == XXX
, я могу использовать этот словарь. Это отлично работает...
НО сеансы являются временными. Клиент может использовать несколько сеансов. Так что для одного клиента у меня скоро будет много входных данных в моем словаре. Когда я отправлю сообщение всем сеансам в моем словаре с CLIENT_ID == XXX
, я отправлю одно и то же сообщение одному и тому же клиенту несколько раз.
Мой вопрос: Как зарегистрировать уникальных клиентов с помощью websocket-sharp? Какое свойство следует использовать?
Редактировать: даже с уникальным клиентом каждые 20 секунд он меняет идентификатор сеанса. Вероятно, это новая сессия, созданная для проверки связи.