2017-02-09 16 views
0

我在linux上連接到運行socket-io-client的客戶機上有一個nodejs socket.io應用程序。在socket io中,一個用戶連接創建了數十個「加入空間」?

的nosejs服務器是:

  • 節點v6.7.0
  • 表達4.10.8
  • socket.io 1.4.5

Java端使用行家:

<dependency> 
    <groupId>io.socket</groupId> 
    <artifactId>socket.io-client</artifactId> 
    <version>0.8.3</version> 
    </dependency> 

我只是從socket.io 0.9遷移,所以我只有一個用戶連接到nodejs套接字服務器。

在某些情況下,我有一個奇怪的現象是這一個連接創建數十個連接

socket.io:socket socket connected - writing packet +106ms 
socket.io:socket joining room /#q-brvq0-lMhLKY6tAAAR +0ms 
socket.io:socket joined room /#q-brvq0-lMhLKY6tAAAR +0ms 
socket.io:socket socket connected - writing packet +46ms 
socket.io:socket joining room /#p-_dEpC_2IJoiVtFAAAS +0ms 
socket.io:socket joined room /#p-_dEpC_2IJoiVtFAAAS +0ms 
socket.io:socket socket connected - writing packet +4ms 
socket.io:socket joining room /#9Ha8CuQh6Vw3OROuAAAT +0ms 
socket.io:socket joined room /#9Ha8CuQh6Vw3OROuAAAT +0ms 
socket.io:socket socket connected - writing packet +192ms 
socket.io:socket joining room /#qu1Hhixulei3fDV7AAAU +0ms 
socket.io:socket joined room /#qu1Hhixulei3fDV7AAAU +0ms 
socket.io:socket socket connected - writing packet +24ms 
socket.io:socket joining room /#0Jd2FY5rY-_Rfps6AAAV +0ms 
socket.io:socket joined room /#0Jd2FY5rY-_Rfps6AAAV +0ms 
socket.io:socket socket connected - writing packet +122ms 
socket.io:socket joining room /#BCgabXA28IBHV94NAAAW +0ms 
socket.io:socket joined room /#BCgabXA28IBHV94NAAAW +0ms 
socket.io:socket socket connected - writing packet +19ms 
socket.io:socket joining room /#ibtuQc60nb7kExHvAAAX +1ms 

從Java客戶端這是創建連接的代碼:

 try { 
      System.out.println("socket phy create"); 
      socket = IO.socket(domain+":"+port); 
     } catch (URISyntaxException ex) { 
      System.out.println("socket URISyntaxException"); 
     } 

95它創建只有一個「套接字連接」的時間的百分比,5%創建了幾十個。有什麼問題,或者你能提出一種調試方法?

回答

0

的問題是與系統實現..

當我調試,我有時會被關閉套接字服務器(爲了改變一些代碼)。在客戶端,我每5秒鐘進行一次重新連接檢查。這個方法每次都調用createNodeConnection。當最後我重新加載套接字服務器時,所有這些連接立即連接。

定盤到「套接字創建」從「套接字連接」分離(並使用在重連接方法的「套接字連接」)

public void createNodeConnection() { 
     try { 
      socket = IO.socket(domain+":"+port); 
     } catch (URISyntaxException ex) { 
      System.out.println("socket URISyntaxException"); 
     } 

     socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() { 
      @Override 
      public void call(Object... args) {...//handle code..} 

     }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() { 

      @Override 
      public void call(Object... args) {...//handle code..} 

     }).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() { 
      @Override 
      public void call(Object... args) {...//handle code..}; 
     });    

     socketConnection(); 
}; 


public void socketConnection() { 
     socket.connect();    

} 
相關問題