关于Web Sockets我有几个问题。

最新的Firefox 4.0每晚支持Web套接字。 Webkit(Chrome 4 + Safari 4/5)也是如此。根据Microsoft的说法,Internet Explorer 9应该在某些时候具有Web套接字功能(在稳定版本之前)。

无论如何,我的问题是:

  • 我正在构建一个JavaScript管理界面来管理网站。如果我告诉您我做而不是需要关心浏览器的兼容性,我应该使用Web套接字而不是XMLHttpRequest来进行客户端-服务器通信吗?
  • 与XMLHttpRequest的通常情况相比,Web套接字会导致更快的保存,删除和更新调用吗?请求会更即时吗?
  • 我知道HTML5的navigator.onlinewindow.addEventListener('offline', ...),但是有了Web套接字(由于连接丢失),我能够更准确,更快地检测到连接问题吗?我的意思是,当我关闭Internet连接或使用防火墙阻止它时,Firefox仍显示navigator.online true 。使用Web套接字,似乎与服务器的连接将立即丢失,因此,我可以更准确地检测到连接问题吗?
  • 我可以用纯PHP支持Web Sockets服务器端,以便该代码可移植到其他Web服务器中吗(不需要,需要安装任何Apache模块或进行其他自定义)。我想将软件分发到几个地方,而无需要求人们将各种模块安装到他们的HTTPD上。

  • 希望您能回答尽可能多的问题。我对答案真的很感兴趣。

    最佳答案



    在我看来,您只是想为此使用WebSockets。使用WebSockets的主要原因是当您要将数据从服务器推送到客户端时。如果您的应用程序不需要它,则可能不应该使用WebSockets。



    由于没有标题,您可能在两端(客户端和服务器)上节省了一些时间。但是 yield 可能很小。



    是的,当WebSocket关闭时,事件将立即触发。替代方案是长轮询或定期XHR。或事件客户端存储。



    首先,我建议您通读this。 WebSockets不能以同步方式很好地工作。 PHP和apache不能以异步方式很好地工作。尽管there are some implementations,但其中许多已过时。我个人会为此使用其他语言,例如rubypythonjavaserver-side javascript。仅仅是因为这些语言对异步模型具有更好的支持,并且WebSocket实现更加复杂。

    WebSocket协议(protocol)目前仍是草案,可以更改。就像a few weeks ago一样。因此,您的代码很可能会中断。

    我的建议是:不要仅仅为了它而使用WebSockets。如果您具有实时事件驱动的应用程序,那么它可能是正确的选择。确保您了解WebSocket的用途以及它在服务器端的作用,以及事件驱动的应用程序。不要将其用于任何生产,它太脆弱了。

    09-26 09:15