哪种技术能够立即通知客户有关服务器事件的信息?

时间:2014-07-27 13:14:27

标签: sockets websocket connection connection-pooling comet

我要创建一个游戏。 起初它将是浏览器游戏。 稍后它将是APP(Android,iPhone游戏)。

在服务器端,我使用nginx,apache,php。

=================

我需要告知在线玩家不同的事件。 例如:一个用户受到另一个用户的攻击。我应立即通知他。

古典AJAX不能错。我读过一些有关彗星,网络套接字和其他一些技术的内容。 但我仍然无法理解,哪种解决方案对我最好? 请帮我决定。

3 个答案:

答案 0 :(得分:1)

WebSocket应该是首选选项。这是一项广泛支持的技术。

这是一种持久的全双工连接,与所有主流浏览器兼容http://caniuse.com/websockets

答案 1 :(得分:0)

也许你可以尝试服务器发送事件。

使用SSE,保持常量连接,直到页面被卸载,连接出现问题或者手动关闭连接。

每次发生某事时,例如如果玩家受到攻击,您会向客户端发送event命令,然后根据事件数据采取行动。

虽然它在每个浏览器中都不起作用,但这是一种可以尝试的技术

http://www.html5rocks.com/en/tutorials/eventsource/basics/对SSE以及如何设置进行了进一步的解释

答案 2 :(得分:0)

使用WebSocket。使用此功能,您可以处理从客户端浏览器发送到服务器的数据(例如“用户A攻击用户B”)和通过单个通道从服务器发送的数据。这节省了服务器资源 - 并且拥有单一技术优于两个独立技术(AJAX +用于反向通道)。

此外,还有适用于Android和iOS的WebSocket库,因此您可以在未来附加本地客户端。

由于您需要同时将事件分发到多个客户端,因此请使用“发布”和“发布”等内容。在WebSocket上订阅会有意义。

我建议看看Crossbar.io - 它是一个开源应用程序路由器,它可以发布& amp;订阅即开始订阅。

完全披露:我为Crossbar.io开源项目的创始人Tavendo工作。