【发布时间】:2014-05-14 09:58:50
【问题描述】:
我正在使用 autobahn android web socket 库来构建我的 web socket 客户端应用程序。 为了让 Web 套接字连接长时间保持活动状态,我需要定期从客户端发送 ping 消息。
如何使用 auotbahn android web socket 库做到这一点?
【问题讨论】:
标签: android websocket autobahn
我正在使用 autobahn android web socket 库来构建我的 web socket 客户端应用程序。 为了让 Web 套接字连接长时间保持活动状态,我需要定期从客户端发送 ping 消息。
如何使用 auotbahn android web socket 库做到这一点?
【问题讨论】:
标签: android websocket autobahn
AutobahnAndroid 的 WebSocketWriter supports 客户端 pong 消息和 AutobahnPython claims 如下:
Pings/Pongs 的显式处理通常是不必要的 - AutobahnPython 会在后台做正确的事情。
但是,在执行简单的聊天客户端-服务器设置期间,我没有观察到这样的 ping/pong 心跳消息。
根据我的阅读,从文档和源代码中都不清楚,启用隐式 Autobahn* 心跳的全部要求是什么。
我的个人解决方案包括在 onConnection 和适当的 onMesssage 期间从服务器发出 ping,以及类似于以下客户端代码 onMessage 的内容:
if (payload.equals("ping from the server"))) {
handler.postDelayed(new Runnable() {
@Override
public void run() {
myWebSocket.sendTextMessage("pong from the client");
}
}, 1000L);
}
... 调度客户端发送的 pong 响应,在接收到来自服务器的 ping 后 1 秒。
【讨论】:
你可以使用我刚刚提交的拉取请求
https://github.com/tavendo/AutobahnAndroid/pull/67
添加了 sendPingMessage(byte[] payload) 和 onPongMessage(byte[] payl)。
【讨论】: