我正在为iOS游戏编写服务器。游戏是回合制的,服务器只需要在对手移动时向客户端推送信息。
我想知道使用WebSockets和长轮询之间在性能和实现难度方面有何区别,并希望有人对此进行评论。另外,如果我使用WebSockets,是否应仅用它来接收信息并发送POST请求以完成其他所有通信,还是所有通信都应通过WebSocket完成?
此外,如果我还想制作Web客户端,那么在WebSockets和长轮询之间是否还有其他要考虑的因素?
我正在为iOS游戏编写服务器。游戏是回合制的,服务器只需要在对手移动时向客户端推送信息。
我想知道使用WebSockets和长轮询之间在性能和实现难度方面有何区别,并希望有人对此进行评论。另外,如果我使用WebSockets,是否应仅用它来接收信息并发送POST请求以完成其他所有通信,还是所有通信都应通过WebSocket完成?
此外,如果我还想制作Web客户端,那么在WebSockets和长轮询之间是否还有其他要考虑的因素?
对于其他可能有疑问的人,这取决于事件之间典型交互持续多长时间。
Websocket:如果超过几十秒,保持一个websocket连接不是特别高效的(更不用说如果应用程序失去焦点,它会断开连接)。
长轮询:这迫使在服务器负载和知道发生更改的速度之间做出权衡。
推送通知:虽然这可能在技术上更加复杂,但我认为这确实是最好的解决方案,因为:
我是否应该只使用它来接收信息和发送POST请求,以处理其他的事情?
是的,你应该只使用WebSockets来获取实时更新,并使用REST API来进行BREAD(浏览、读取、编辑、添加和删除)操作。
所有的通信都应该通过WebSocket吗?
简单回答:不应该。
查看PieSocket的文章,了解更多关于WebSockets最佳使用案例的信息:什么是WebSocket:介绍和用法