我正试图在XMPP上开发一个转弯基础游戏.(我发现多平台游戏的唯一解决方案).我可以毫无问题地发送消息.如果其他用户不在线,则服务器(OpenFire)将其保存以供以后交付.
当设备更换网络(从3g更改为WiFi,更改3g IP ...)或设备丢失网络(关闭3g,wifi或丢失连接)时出现问题.服务器认为设备在线并发送消息但是(很明显)从未到达,因此数据包丢失.
我知道一个解决方案.对我的游戏协议实施ACK,但我不太喜欢这个想法.你还有其他建议吗?我认为这是一个服务器问题.你知道另一个服务器巫婆实施TCP或ACK吗?
谢谢!!
编辑:我这样做:将设备连接到服务器.我拒绝3G和WiFi连接到设备.Android和服务器仍然认为连接是活的.
http://issues.igniterealtime.org/browse/SMACK-331
PD:我要求他们为多人游戏api打开,但他们并不认为我...
在某些情况下 TCP/IP 并不可靠。这就是为什么 XMPP 中的 ACK、消息接收、IQ 或其他扩展可以解决这个问题。
多年来我做了很多移动编程,也经常使用 Openfire。但我还没有看到丢失的消息。所以我假设您在 Android 上使用的库或您使用的 Openfire 版本有问题。
除了使用原始套接字之外,您还可以使用 BOSH: http:
//xmpp.org/extensions/xep-0124.html
BOSH 基于像 Comet 这样的 WebRequest,并且在经常切换或断开连接的环境中工作得很好。它可以保持连接处于活动状态,直到网络恢复,并且当一个或多个请求连续失败时,不会导致连接丢失。
| 归档时间: |
|
| 查看次数: |
5568 次 |
| 最近记录: |