2017-02-09 40 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();    

} 
相关问题