为什么pubnub javascript sdk(?)选择XHR over Websocket?

时间:2015-01-01 12:42:04

标签: javascript websocket real-time multiplayer pubnub

我正在开发简单的浏览器实时多人游戏(游戏玩法中的2个玩家)游戏。它涉及快速和频繁的玩家移动和方向的改变,因此信息必须非常快速地交换 - 我决定尝试websockets(很乐意使用pubnub服务而不是自托管套接字服务器)。

我的问题是,pubnub总是决定使用xhr后备而不是websockets - 不知道为什么。通过websockets运行通信是否有任何特定要求? Http显然太慢了并且杀死了经验。我在Mac上使用最新的Chrome,因此浏览器兼容性不是问题。

或许,确定通信协议有很多变量,问题无法解答?我唯一的解决方案是使用自托管套接字服务器吗?

2 个答案:

答案 0 :(得分:3)

实时协议WebSockets和带有PubNub的XHR

现代数据流网络和开源解决方案始于XHR。由于多种原因,从包括速度开始这是最佳的。性能取决于光速以及以太网帧能够在互联网上的设备之间传输的速度。这是协议独立性的基础,也是互联网上消息延迟和速度的核心决定因素。 PubNub客户端SDK(例如JavaScript)不提供强制特定协议的设置。

PubNub如何工作

  

请参阅How PubNub Works向下滚动鼠标演示。

PubNub Data Stream Network

PubNub是目前最快的全球数据流网络,全球有15个数据中心,可支持您的高速和低延迟要求。连接到PubNub数据流网络的设备超过1/4亿,每条消息的发送/接收速度从10毫秒到100毫秒。

什么是协议独立?

PubNub数据流网络背后的人们相信Protocol Independence and the open mobile web;这意味着我们将使用最佳协议来通过任何环境获得连接。协议,如 WebSockets ,可以通过手机信号塔切换,双NAT环境,甚至一些反病毒软件或代理边界管理机构来绊倒。

  

PubNub专门提供客户端库,因此我们可以自动切换协议并删除套接字级复杂性,使开发人员可以轻松构建可实时通信的应用程序。

随着时间的推移,PubNub已经使用了各种协议,例如 WebSockets ,MQTT,COMET,BOSH,长轮询等等,我们正在探索目前使用的原型设计SPDY,HTTP 2.0等。最重要的是,PubNub将在每个网络环境中运行,并且具有非常低的网络带宽开销,以及移动设备上的低电池消耗。

答案 1 :(得分:1)

您还可以尝试使用WebSockets作为第一选项协议(使用XHR回退)的其他云服务,例如PusherRealtime(我工作的公司)。