HTML5 Websockets 服务器要求

Posted

技术标签:

【中文标题】HTML5 Websockets 服务器要求【英文标题】:HTML5 Websockets Server Requirements 【发布时间】:2011-05-23 09:52:41 【问题描述】:

我昨天一整天都在尝试了解 html5 websockets,但对以下几点仍然有些困惑:

    我是否需要在我的 apache 服务器上安装任何其他插件才能运行 websocket 服务器? 是否可以在不访问服务器根目录的情况下在共享服务器设置上运行 websocket? IE9 是否支持 websockets,如果不支持,那么如果浏览器支持如此有限,那么使用它们是否有任何意义?我应该改用轮询技术吗? 如何同时运行 websockets(例如多个聊天应用程序实例)每个是如何唯一定义的? 对于不支持 websocket 的浏览器,是否有可靠的备用方案?

希望有人能帮助我理解这些要点,非常感谢!

W.

【问题讨论】:

这可能会让你感兴趣:webmonkey.com/2010/12/… 【参考方案1】:

1) 没有。 2) 是的。 3)谁知道。微软并没有像往常一样说,但可能不会。

Firefox、Chrome 和 Opera 都宣布暂时不支持 Web 套接字,因为标准不完整且存在安全问题。现在搞这个可能还为时过早。

【讨论】:

Chrome、Firefox 4、Safari 和 Opera 都支持 WebSocket 草案 76。它甚至在 iPhone 上的 Safari 上也支持。由于 WebSocket 标准仍在制定中,预计未来会出现一些破坏性的兼容性。 我感到困惑的原因是因为所有 websockets 教程都显示服务器是通过命令行界面启动的。当应用程序在线而不是本地时,我无法访问这样的命令行界面。此外,如果 apache 服务器上不需要其他软件,code.google.com/p/pywebsocket 是什么意思? @badcat - 谷歌搜索我谈到的来自 FF、Opera 和 Chrome 的最新消息。 @Wilson Page - pywebsocket 是一个扩展,可让您更轻松地使用 Apache,但您无需对服务器本身进行任何更改。【参考方案2】:

不要将 WebSockets 视为 Web 服务器插件。 WebSockets 是一种在浏览器和其他东西之间建立(几乎)原始套接字连接的方法。标准委员会希望允许 Web 服务器轻松地将 WebSocket 连接转发到其目标服务,但是从协议的 v76 开始,WebSockets 握手明显与 HTTP 设置不兼容(出于模糊的安全原因)。这可能会在未来改变,尤其是现在在 v76 设置过程中发现了一个严重的安全问题。

是的,WebSockets 握手看起来很像 HTTP,所以很容易混淆,但即使它与 HTTP 升级请求兼容,它仍然只是为了方便 Web 服务器转发,而不是让webserver 可以成为 WebSockets 服务器。

最近有一个security issue in WebSockets,这可能意味着大多数浏览器制造商将禁用 WebSockets,直到该协议的下一个版本准备好,但除此之外,WebSockets 几乎得到普遍支持,因为没有本机支持的浏览器可以使用 web-socket-js是基于 Flash 的后备。 ios 4.2 也支持 WebSockets(尽管同样,由于安全问题可能会暂时禁用)。

所以你的问题的答案是:1) Mu 2) 是 3) 不太可能 4) WebSockets 没有定义 5) 是:见web-socket-js

【讨论】:

【参考方案3】:

对于不支持 websockets 的浏览器是否有可靠的备用方案?

Socket.IO 似乎运作良好。我自己还没有使用它进行开发,但我已经测试了将它与本机不支持 WebSockets 的浏览器一起使用的应用程序。

对于它的价值,您可能希望在谈论和/或研究它时放弃 HTML5。 WebSockets 不再是 HTML5 的一部分。如果您搜索有关“HTML5 WebSockets”的信息,您更有可能找到过时的信息。

【讨论】:

以上是关于HTML5 Websockets 服务器要求的主要内容,如果未能解决你的问题,请参考以下文章

使用 Openfire、Javascript (strophe.js) 和 html5 websockets 的聊天客户端?

html5 WebSocket

2011 年中期免费 Web 服务器上都有哪些框架用于 HTML5 Web 套接字?

Nginx代理WebSockets配置详解

CentOS安装noVNC,以Web方式交付VNC远程连接

CentOS安装noVNC,以Web方式交付VNC远程连接