2010-06-22 113 views
3

我有几个有关Web Sockets的问题。网络套接字问题

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

不管怎样,我的问题是:

  • 我建立一个JavaScript管理界面来管理网站。我应该使用Web套接字进行客户机 - 服务器通信而不是XMLHttpRequest,如果我告诉过你我不是需要关心浏览器的兼容性吗?

  • 与XMLHttpRequest的常见情况相比,Web套接字是否会导致更快的保存,删除和更新调用?请求会更多即时

  • 我知道的HTML5的navigator.onlinewindow.addEventListener('offline', ...),但随着网络套接字(在连接丢失),我能够更准确和快速地检测连接的问题?我的意思是,当我关闭我的互联网连接,或用我的防火墙阻止时,Firefox似乎仍然指出navigator.online真实。使用Web套接字,似乎与服务器的连接将立即丢失,因此,我可以更准确地检测到连接问题?

  • 我可以支持Web套接字服务器端与 PHP,因此,该代码是便携与其他Web服务器(没有无需安装任何Apache模块或做其他定制)。我想将软件分发到几个地方,而不必让人们将各种模块安装到他们的HTTPD或其他地方。

我希望你能回答尽可能多的这些问题。我对答案很感兴趣。

回答

5

我正在构建一个JavaScript管理界面来管理网站。如果我告诉你我不需要关心浏览器兼容性,我应该使用Web套接字进行客户端 - 服务器通信而不是XMLHttpRequest吗?

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

与XMLHttpRequest的常见情况相比,Web套接字是否会导致更快的保存,删除和更新调用?请求会更加及时吗?

由于缺少标头,您可能会在两端(客户端和服务器)节省一些时间。但收益可能相当小。

与Web套接字(在连接丢失时),我能够更准确,更快地检测到连接问题吗?

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

我可以支持Web套接字服务器端采用纯PHP,因此,该代码是便携与其他Web服务器

首先,我建议你通过阅读this。 WebSocket在同步方式下效果不佳。以异步方式,PHP和apache不能很好地工作。虽然therearesomeimplementations,其中许多已过时。我个人会为此使用其他语言,例如rubypython,javaserver-side javascript。只是因为语言对异步模型有更好的支持,WebSocket实现更复杂。

WebSocket协议目前仍然是一个草案,它可以改变。就像它做a few weeks ago。所以你的代码可能会崩溃。

我的建议是:不要仅仅为了它而使用WebSockets。如果你有一个实时的事件驱动的应用程序,那么它可能是正确的选择。确保您了解什么是WebSockets,以及它在服务器端的用途,以及事件驱动的应用程序。不要用它来制作任何东西,它太脆弱了。

+1

注意:现在有一个体面的WebSocket服务器用PHP编写:http://socketo.me/ – igorw 2013-01-09 02:52:24