2015-04-29 108 views
2

我使用websocket-sharp(https://github.com/sta/websocket-sharp)(僅供應商方)。C#Websocket-Sharp - 如何識別客戶端

我可以有很多客戶端應用程序連接到我的websocket服務器。每個客戶發送一個ID(我們稱之爲CLIENT_ID)。

我想知道哪個websocket會話與CLIENT_ID有關。我們稱之爲SESSION_ID)。

我曾嘗試:

首先我有一個存儲每個SESSION_IDCLIENT_ID(一個簡單的字典)存儲類。

當我收到來自客戶端應用程序的消息時,我在我的字典中存儲SESSION_IDCLIENT_ID

所以,當我想發送消息到所有會話有CLIENT_ID == XXX我可以使用這本字典。這工作正常...

但會話只是臨時。客戶可以使用多個會話。所以對於單個客戶,我很快會在我的字典中有很多輸入。當我發送郵件給所有具有CLIENT_ID == XXX的詞典的會話時,我會多次向同一個客戶端發送相同的消息。

我的問題是:如何使用websocket-sharp註冊獨特的客戶端?我應該使用哪個屬性?

編輯:即使有一個唯一的客戶端,每20秒它會更改會話的ID。這可能是爲ping創建的新會話。

回答

1

好吧,我找不到任何東西,我保留SESSION_ID,但當我在我的字典中註冊一個新項目(SESSION_ID =>CLIENT_ID)我必須手動刪除所有「舊會話」。可以通過檢查session.State == WebSocketState.Open來完成。

這不是完美的,但它的工作原理。