WebSocket 服務端-SupperWebSocket

通過對Flect Websocket 和 SupperWebSocket 的比較,初步總結出

WebSocket 服務端的實現步驟:

  • 建立WebSocket 服務,並註冊事件(Opend OnMessageReceived Closed)
  • 配置 監聽地址 Fleck 的WebSocketServer(url) url="ws://0.0.0.0:10020" 而SupperWebSocket.Setup(ip,port)
  • 啓動監聽 Start()

示例:(SupperWebSocket)

WebSocketServer wsServer=new WebSocketServer();
if(!wsServer.Setup(ip,port)){
  //設置ip與端口失敗
}
if(!wsServer.Start())
{
  啓動監聽失敗處理
}
wsServer.NewSessionConnected=(session)=>{有新的連接};
wsServer.NewSessionClosed=(session,reason)=>{有斷開連接};
wsServer.NewMessageReceived=(session,message)=>{收到新的消息}
wsServer.NewDataReceived=(session,bytes)=>{二進制消息}
wsServer.Stop()

這裏WebSocketServer對象通過SetUp方式對要監聽的IP及端口進行了設置,然後使用Start方法啓動監聽。

Setup方法有4中重載,但是我們通常用到的只有設置ip和端口。
WebSocketServer 還提供了4個事件泳衣管理與客戶端的連接、斷開和接受消息動作。NewMessageReceived 事件用於處理文本類消息,NewDataReceived 事件用於處理二進制類型的消息。

SupperWebSocket支持以控制檯、Winform、IIS以及Windows服務的形式寄宿服務。

WebSocket 既然是雙工通信,那麼就不能光等着接收來自客戶端的消息,我們也需要從服務端向客戶端推送消息。

SupperWebSocket 框架中,服務端與客戶端創建的連接對象爲WebSocketSession類型,也就是說將每一個客戶端的實例視爲一個會話,在客戶端創建連接的時候,產生這個會話,在客戶端斷開的時候銷燬這個會話,而客戶端與服務端進行消息通信的時候,也依賴這個會話進行傳遞。我們要實現服務端向客戶端的廣播,就要獲取到當前在活動的所有會話.

wsServer.GetAllSessions(); //獲取所有的會話,已斷開的會話不會出現在集合中

在獲取到會話之後,我們就可以通過會話向客戶端發送消息了

foreach(var item in wsServer.GetAllSessions()){
   item.Send("消息");  //所有與服務端保持連接的會話(客戶端)都能接收到本條消息

}

同時會話對象還提供一個SendCloseHandshakeResponse()方法向客戶端發送一個強制斷開連接的指令。
WebSocketSession 對象包含了服務端和客戶端的所有信息,以及WebSocketServer對象本身,我們可以利用它做很多事情。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章