【发布时间】:2014-02-28 11:09:29
【问题描述】:
我编写了连接到 websocket 服务器的 android 应用程序、服务器应用程序和使用 Autobahn websocket 库实现的 android 应用程序。
我可以与服务器成功连接和交换消息。但一段时间后(20 - 30 分钟后)android 应用程序停止与服务器通信(它无法向服务器发送消息)。在 logcat 上显示应用程序仍然连接到 websocket,即使它无法向服务器发送消息。
我浏览了 Autobahn 库的源代码,发现它使用 java.nio.channels.SocketChannel 连接到 websocket。使用 SocketChannels 有什么问题吗? (我从这里Android - How to keep connection with server for a long time 发现了类似的问题)
【问题讨论】:
-
它是如何失败的?您发送消息,而消息在另一端不可用?您使用的是什么类型的 SocketChannel(阻塞/非阻塞)?
-
一段时间后,我无法从手机向服务器发送消息。是的,消息在另一边不可用。使用阻塞模式的高速公路库。这是高速公路库的源代码 - (github.com/tavendo/AutobahnAndroid/blob/master/Autobahn/src/de/…)
-
可能是接收方处理数据的速度不够快。看看这里,它可能会有所帮助:jfarcand.wordpress.com/2006/05/30/…
-
我已经解决了这个问题。下面是我的回答。谢谢。
标签: java android websocket socketchannel autobahn