1. 程式人生 > 其它 >WebSocket 服務端未啟動時,客戶端重連報錯

WebSocket 服務端未啟動時,客戶端重連報錯

當WebSocket服務端未啟動時,我們在客戶端申請連線,會報 System.Net.Sockets.SocketException 異常。

當然,我們除錯時異常設定預設是不勾選這個的。所以不影響正常除錯。

但小夥伴發現,依然會影響介面卡頓,尤其是書寫效能受影響。

所以,需要確認判斷服務端是否已啟動,再讓客戶端連線服務端,規避掉這個異常。

websocket中沒有這樣屬性,能獲取到服務端啟動的狀態。

看了下webSocket的內部機制,是通過IP+埠TCP進行通訊的。所以可以檢視端口占用情況來判斷:

如上圖中,Listening的2710埠是服務端,下面Established表示和服務端已建立連線的2個客戶端。

也可以用C#判斷埠是否佔用:

 1     /// <summary>
 2     /// 判斷服務端是否已啟動
 3     /// </summary>
 4     /// <returns></returns>
 5     public static bool CheckServerListening()
 6     {
 7         var port = ChannelCustomText.Port;
 8         IPGlobalProperties ipProperties = IPGlobalProperties.GetIPGlobalProperties();
9 IPEndPoint[] ipEndPoints = ipProperties.GetActiveTcpListeners(); 10 foreach (IPEndPoint endPoint in ipEndPoints) 11 { 12 if (endPoint.Port == port) 13 { 14 return true; 15 } 16 } 17 return false; 18 }