2015-09-04 188 views
0

我已經開始學習網絡套接字了。在當今時代必須學習技術。 但我很想知道更多關於它。我的基本問題是可以在客戶端創建多少個WebSocket連接。客戶端可以創建多少個WebSocket連接

我的典型應用是基於html的UI,並且在服務器上我有基於休息的服務。我需要跟蹤

  1. 會話超時是否已經發梗與否
  2. 是否與服務器的連接丟失或不?一種用於檢查連接的共享程序是否存在。

因此,我在客戶端上創建了2個websocket對象,併爲它們創建了不同的url。

我希望我已經正確實施它了嗎?

回答

1

基本上瀏覽器關閉舊的websocket連接,一旦你打開新的連接到相同的URL(ws://127.0.0.1:8080/WebSocket-context-root/getResource)。你可以保留像「ws://127.0.0.1:8080/WebSocket-context-root/getResource /」+ k這樣的小破解。其中k是任何數字/任何隨機字符串。在服務器端只需忽略路徑變量k。

這樣就可以同時打開許多連接。瀏覽器對每個域的最大連接數限制不適用(在Firefox上測試)。我嘗試了最多25個並行連接。

您可以使用websocket.readyState檢查Web套接字連接的狀態。

onclose Web套接字的事件具有關閉連接的原因碼。

以下用戶代碼用於測試活動連接的數量。

 var x=0 
    var intervalID = setInterval(function() { 
    websocket = new WebSocket("ws://127.0.0.1:8080/WebSocketApi/web/chat/"+x); 

     websocket.onopen = function (evt) { 

     console.log('open') 
     } 

     websocket.onmessage = function (evt) { 
      console.log('msg'); 
     } 
     websocket.onclose= function (evt) { 
      console.log('closed'); 
     } 
     if (++x === 15) { 
      window.clearInterval(intervalID); 
     } 

}, 1); 
+0

哦!如果我清楚地理解你只有單個連接對象alive.And我們需要在URL中添加一些參數來分隔操作。 –

+0

對於一個URL,只有單個連接對象處於活動狀態。對於不同的URL,可以存在多個對象。 – Abhinay

+0

變種x = 0的 變種intervalID =的setInterval(函數(){ 的WebSocket =新的WebSocket( 「WS://127.0.0.1:8080/WebSocketApi /網絡/聊天」 + X); websocket.onopen =函數(EVT){ 的console.log( '開放') } websocket.onmessage =函數(EVT){ \t \t \t \t的console.log( 'MSG'); } 如果(++ X = == 15){ window.clearInterval(intervalID); } },1); – Abhinay

相關問題