Web Sockets的问题

3

我有几个关于Web Sockets的问题。

最新的Firefox 4.0夜间版支持Web Sockets。Webkit(Chrome 4 + Safari 4/5)也支持。根据微软的说法,Internet Explorer 9也将在某个时候支持Web Sockets(在稳定版发布之前)。

无论如何,我的问题是:

  • 我正在构建一个JavaScript管理界面来管理网站。如果我告诉你我不需要关心浏览器兼容性,那么在客户端和服务器之间的通信中,我应该使用Web Sockets而不是XMLHttpRequest吗?

  • 与XMLHttpRequest通常情况下相比,Web Sockets是否会导致更快的保存、删除和更新调用?请求会更加即时吗?

  • 我知道HTML5的 "navigator.online" 和 "window.addEventListener('offline',...)",但是使用Web Sockets(在连接丢失时),我能更准确、更快地检测到连接问题吗?我的意思是,当我关闭Internet连接或者用防火墙屏蔽它时,Firefox仍然似乎声明 "navigator.online" 为 "true"。使用Web Sockets似乎会立即丢失与服务器的连接,因此我可以更准确地检测到连接问题?

  • 我能否使用纯PHP支持Web Sockets服务器端,以便代码可移植到其他web服务器(无需安装任何Apache模块或进行其他定制)?我希望将软件分发到一些地方,而不必要求人们在其HTTPD上安装各种模块。

我希望您能回答尽可能多的问题。我真的很想知道答案。
1个回答

5
我正在构建一个JavaScript管理界面来管理网站。如果我告诉你我不需要考虑浏览器兼容性,那么我应该使用Web Sockets来进行客户端-服务器通信,而不是XMLHttpRequest吗?
看起来你只是想为了使用WebSockets而使用它。使用WebSockets的主要原因是当你想要从服务器向客户端推送数据时。如果你的应用程序不需要这个功能,你应该尽量不使用WebSockets。
相比于XMLHttpRequest,使用Web Sockets是否会导致更快的保存、删除和更新调用?请求会更加即时吗?
由于没有头部信息,你可能会在两端(客户端和服务器)节省一些时间。但收益可能非常小。
使用Web Sockets(在连接丢失时),我能更准确、更快地检测到连接问题吗?
是的,WebSocket关闭时会立即触发事件。其他选择包括长轮询或定期XHR。或者客户端存储。
我能使用纯PHP支持Web Sockets服务器端,以便代码可移植到其他Web服务器吗?
首先,我建议你阅读这个。 WebSockets在同步方式下工作效果不佳。 PHP和apache在异步方式下工作效果也不好。虽然有一些实现但很多都已过时。我个人会使用其他语言,如rubypythonjava服务器端javascript。因为这些语言对异步模型有更好的支持,WebSocket实现也更加复杂。
WebSocket协议目前仍然是草案,它可能会改变。就像几周前所做的那样。因此你的代码很可能会出问题。
我的建议是:不要仅仅为了使用WebSockets而使用它。如果您有一个实时事件驱动的应用程序,那么它可能是正确的选择。确保您理解WebSockets的作用以及服务器端需要做什么,还要考虑事件驱动应用程序方面的问题。不要将其用于任何生产环境,因为它非常脆弱。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接