擅长:python、mysql、java
<p>直到几周前,websockets部署还需要一个独立的服务器在不同的端口上运行,或者服务器端代理(如varnish/haproxy)在端口80上侦听并重定向正常的http流量。最新的nginx版本增加了对websockets的内置支持,但是除非你的主机供应商使用它,否则你就走运了。(请注意,我没有使用nginx功能的个人经验)</p>
<p>就我个人而言,我发现对于大多数应用程序来说,websockets可以用<a href="https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events" rel="nofollow">Server-sent events</a>代替,这是一个非常轻量级的协议,它基本上是另一个在服务器端保持打开状态的http连接,它发送一个明文流,消息由两个换行符分隔。</p>
<p>大多数不错的浏览器都支持它,但由于这不包括internet explorer,因此有多个可用的填充<a href="https://github.com/remy/polyfills/blob/master/EventSource.js" rel="nofollow">here</a>和<a href="https://github.com/Yaffle/EventSource" rel="nofollow">here</a></p>
<p>这包括连接的一侧,通常通过长轮询实现。另一个方向可以用XHR覆盖。最终结果与websockets IMO非常相似,但客户端-服务器消息的延迟稍高。</p>