Socket.IO心跳未发送

时间:2015-08-18 12:32:04

标签: android socket.io socket.io-java-client

我一直在运行Socket.IO服务器(https://github.com/mrniko/netty-socketio),与在Android模拟器上运行的客户端(https://github.com/nkzawa/socket.io-client.java)进行通信。模拟器托管在运行服务器的计算机上。我能够创建从客户端到服务器的初始连接,并成功发送消息(客户端到服务器),但不久之后心跳失败并且连接断开:

  

DEBUG [07:17:45.470] c.c.socketio.transport.NamespaceClient:Client   157e4f73-e26d-459c-ac1c-506628b66a09用于命名空间   断绝了DEBUG [07:17:45.470]   c.c.socketio.SocketIOChannelInitializer:具有sessionId的客户端:   157e4f73-e26d-459c-ac1c-506628b66a09断开DEBUG   [07:17:45.470] c.c.socketio.transport.NamespaceClient:客户端   用于namespace / android /的157e4f73-e26d-459c-ac1c-506628b66a09   断绝了DEBUG [07:17:45.471]
  c.c.socketio.handler.ClientHead:157e4f73-e26d-459c-ac1c-506628b66a09   由于ping超时而被删除DEBUG [07:17:46.119]
  c.c.s.transport.WebSocketTransport:客户端已经存在   断开。频道关闭了!

服务器代码:

Configuration serverConfig = new Configuration();
serverConfig.setHostname(MACHINE_IP);
serverConfig.setPort(8082);
serverConfig.setPingTimeout(20);
SocketIOServer server = new SocketIOServer(serverConfig);
server.addNamespace("/android/")
server.start()

客户代码:

IO.Options options = new IO.Options();
options.transports = new String[]{"websocket"};
options.reconnectionAttempts = 5;
options.reconnectionDelay = 10000;
Socket socket = IO.socket(MACHINE_IP + ":8082/android/", options)

我做错了什么? 感谢。

1 个答案:

答案 0 :(得分:0)

我终于能够自己解决问题(也可能有其他解决方案)。

我做的是:

  1. 在localhost上启动服务器 - 因为它不必在机器外可见
  2. 将客户端连接到10.0.2.2 - 这是模拟器访问其主机localhost的方式