3

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

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

无论如何,我的问题是:

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

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

  • 我知道 HTML5navigator.onlinewindow.addEventListener('offline', ...),但是使用 Web 套接字(在连接丢失时),我是否能够更准确、更快地检测连接问题?我的意思是,当我关闭 Internet 连接或使用防火墙阻止它时,Firefox 似乎仍然声明这navigator.online真的。使用 Web Sockets,似乎与服务器的连接会立即丢失,因此,我可以更准确地检测连接问题吗?

  • 我可以用PHP 支持 Web Sockets 服务器端吗,这样代码就可以与其他 Web 服务器移植(无需安装任何 Apache 模块或进行其他自定义)。我想将软件分发到几个地方,而不必要求人们将各种模块安装到他们的 HTTPD 左右。

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

4

1 回答 1

5

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

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

与使用 XMLHttpRequest 的通常情况相比,Web 套接字会导致更快的保存、删除和更新调用吗?请求会更即时吗?

由于没有标头,您可能会在两端(客户端和服务器)上节省一些时间。但收益可能很小。

使用 Web Sockets(在连接丢失时),我是否能够更准确、更快地检测到连接问题?

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

我可以用纯 PHP 支持 Web Sockets 服务器端吗,这样代码可以与其他 Web 服务器移植

首先我建议你通读这个。WebSocket 不能以同步方式很好地工作。PHP 和 apache 不能以异步方式很好地工作。尽管 一些 实现,但其中 许多已经过时。我个人会为此使用其他语言,例如ruby​​ 、pythonjava服务器端 javascript。仅仅是因为这些语言对异步模型有更好的支持,并且 WebSocket 实现更复杂。

WebSocket 协议目前还是一个草案,它可以改变。就像几周前一样。所以你的代码很可能会中断。

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

于 2010-06-24T14:55:13.050 回答