gpt4 book ai didi

java - Android 长轮询 TCP 连接

转载 作者:可可西里 更新时间:2023-11-01 02:33:06 27 4
gpt4 key购买 nike

我从一个月开始尝试在不使用外部库或 gcm 的情况下进行适当的“推送”。

首先,我尝试使用带有 asmack 的 xmpp,然后使用带有 paho 或 ibm mqtt 客户端的 mosquitto,以及带有 alarmtimer 的 http。

最后我以 deacon 和 meteord 结束,但由于它不是很好(在服务器端 - 高 cpu 和内存负载)我试图建立一个长轮询连接。

我知道它需要心跳,最后我在考虑延迟(300 秒心跳应该足够了吗?)和正确的方法。

从服务器向客户端发送心跳信号(1 字节或其他)(延迟例如 300 秒)并在客户端设置 300 的套接字超时是否更好(电池使用等),还是更好将其从客户端发送到服务器?

我目前正在使用一个在 onCreate 中注册观察者并在 onDestroy 中注销的服务。

Observer 正在观察一个在线程中建立 TCP 套接字连接的对象,并在断开连接(套接字超时)时重试。

如果网络连接发生变化,我也会检查广播接收器,并在需要时重新连接。

当设备进入待机状态时会发生什么?我真的需要 alarmmanager 或 timertask 来接收或发送数据包吗?

设备是否会在进入待机状态时断开连接?

目前我尝试从服务器发送到客户端有 120 秒的延迟,即使设备显示关闭它仍然可以发送心跳。

但至少看起来电池消耗不是“可接受的”。

那么.. 最好的方法是什么?

到目前为止谢谢你。

最佳答案

最好的解决方案是使用 REST和一个 Comet Server或至少 NGinxPush Stream ModuleLong Polling .我还创建了一个服务,它返回粘性并在启动时创建一个线程。线程连接。即使在待机和/或深度 sleep 中,它仍然可以工作。

关于java - Android 长轮询 TCP 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20927053/

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