用于实时聊天应用的HTML5 Websockets?

San*_*gha 1 php html5 chat websocket

我们计划使用Websockets技术制作基于HTML5的聊天应用程序.

所以我的问题是:

  1. 目前支持Websockets的浏览器目前是什么?

  2. 如果浏览器不支持它,那么可能的优雅后备是什么?

  3. 有没有可以帮助的polyfill?

问候,

leg*_*ter 12

目前支持Websockets的浏览器目前是什么?

正如之前的答案所指出的那样.

看到:

如果浏览器不支持它,那么可能的优雅后备是什么?

如果您的实时Web服务器仅支持WebSockets,那么下一个最佳选择是使用web-socket-js它是一个基于Flash的polyfill,它创建一个WebSocket与本机WebSocket对象相同的方式与之交互的对象.

额外的后备 - 需要由您的实时Web服务器支持并由它提供的JavaScript客户端库管理 - 最好是最差的:

  1. EventSource - 来自服务器 - >客户端的单个流连接.可以使用第二HTTP请求来实现双向通信.
  2. HTTP Streaming - 使用两个连接来模拟双向连接.消息被"推送"在持久的"流"连接服务器 - >客户端上
  3. HTTP长轮询 - 也使用两个连接.但是,将打开服务器 - >客户端,直到新消息可用或发生超时.然后它关闭,如果已经设置了任何数据,它将在响应中传递.
  4. 标准HTTP轮询 - 效率低得多,并且由于大量潜在的浪费请求.但是,如果您的应用程序提供的更新不会经常发生,并且如果数据在轮询请求之间的时间"过时"无关紧要,那么这可能是一个可接受的解决方案.这里没有"推".

选项1.和2.可以通过多种不同的方式实现,具体取决于Web浏览器.这就是他们'黑客'的原因.我们现在有用于双向通信的WebSocket和EventSource(服务器发送的事件),它与HTTP Streaming非常相似,并且具有支持自动重新连接的额外好处.

有没有可以帮助的polyfill?

是的,请参阅前面提到的web-socket-js.

对于PHP,您最好的选择是Ratchet.它不在Apache中运行,因此它没有受到相同的限制 - 它没有考虑到请求/响应范例.

我现在看到的最常用的解决方案是:

对于其他选项 - 包括像Pusher这样的托管服务(我在撰写本文时为之工作) - 看看我正在维护的这个实时网络技术指南(并接受贡献).