gpt4 book ai didi

Android - 如何长时间保持与服务器的连接

转载 作者:搜寻专家 更新时间:2023-11-01 09:08:55 25 4
gpt4 key购买 nike

我使用 SocketChannel 为 Android 编写了一个聊天应用程序。它与服务器成功连接并且所有功能都正常工作。但是在我登录很长时间后(大约 2-3 小时),我尝试再次发送聊天消息但失败了。在日志文件中,SocketChannel,选择器仍然打开并连接到服务器,消息已经写入成功。有什么问题?我错过了什么?

预先感谢您的帮助。

最佳答案

我在使用 SocketChannel 时遇到过同样的问题。我使用基于 SocketChannel 的库从 andoird 应用程序连接到 websocket(库是 Autobahn websocket)。我可以成功连接到网络套接字并可以通过网络套接字发送/接收消息。但过了一段时间(可能是 30 分钟、1 或 2 小时后)websocket 连接挂起。作为你的场景,日志似乎套接字连接仍然打开并连接到服务器,消息已经写入成功。但服务器不会收到消息。

在我的场景中,问题不在于 SocketChannel。问题是 TCP 超时。为了保持连接有效,我从服务器向客户端发送周期性 ping 消息。 Web socket 默认支持此消息调用PING/PONG 消息。此 ping 消息需要定期发送给客户端,以保持连接有效。客户端收到ping报文后自动回复PONG报文给服务器。通过使用这种方法,我能够长时间保持套接字连接。

有关此方法的更多信息 Solution for websocket hanging , Websockets. Loss of internet, keep-alive messages, app architecture etc , websocket protocol and ping/pong messages

希望这对您有所帮助(即使您没有使用 websocket)。该方法在 websocket 和您的聊天应用程序中可能相同。

关于Android - 如何长时间保持与服务器的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9859744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com