【问题标题】:Socket.IO heartbeat not sent未发送 Socket.IO 心跳
【发布时间】:2015-08-18 12:32:04
【问题描述】:

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

调试 [07:17:45.470] c.c.socketio.transport.NamespaceClient:客户端 命名空间的 157e4f73-e26d-459c-ac1c-506628b66a09 已 断开调试 [07:17:45.470] c.c.socketio.SocketIOChannelInitializer:具有 sessionId 的客户端: 157e4f73-e26d-459c-ac1c-506628b66a09 断开连接调试 [07:17:45.470] c.c.socketio.transport.NamespaceClient:客户端 命名空间 /android/ 的 157e4f73-e26d-459c-ac1c-506628b66a09 已 已断开调试 [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)

我做错了什么? 谢谢。

【问题讨论】:

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


    【解决方案1】:

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

    我所做的是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-02
      • 2015-09-16
      • 2013-08-21
      • 1970-01-01
      • 2021-05-13
      • 1970-01-01
      • 1970-01-01
      • 2014-01-30
      相关资源
      最近更新 更多