整理websockets草案和浏览器支持



在这个问题出现的时候,Mozilla说FF7实现了version 8 (draft 10):

https://developer.mozilla.org/en/Firefox_7_for_developers WebSockets

最新的关于Chromium的博客文章日期为08-01-2011,也说Chromium支持相同的草案10:

http://blog.chromium.org/2011/08/new-websocket-protocol-secure-and.html

都指向同一个链接:

https://datatracker.ietf.org/doc/html/draft-ietf-hybi-thewebsocketprotocol-10

然后在维基百科上,它说FF7和Chrome 14也实现了草案10:

http://en.wikipedia.org/wiki/WebSocket

但是当我在websocket.org上测试FF7和Chrome 14时

http://websocket.org/echo.html

Chrome 14通过,FF7失败。顺便说一句,IE 9也失败了,但Opera 11.52通过了。那么我如何知道哪个版本在websocket.org上运行,并确定FF7是否确实实现了草案10?

如果你看一下那个页面的源代码,你会注意到他们是这样实现API的:

  function testWebSocket()
  {
    websocket = new WebSocket(wsUri);
    websocket.onopen = function(evt) { onOpen(evt) };
    websocket.onclose = function(evt) { onClose(evt) };
    websocket.onmessage = function(evt) { onMessage(evt) };
    websocket.onerror = function(evt) { onError(evt) };
  }

但是对于firefox来说,你应该在第一行使用它,以便能够在FF上使用它:

websocket = new MozWebSocket(wsUri);

因为FF的朋友是这样命名的:D

希望这对你有帮助!

的例子:

function connect() {
    if ('WebSocket' in window) {
        websocket = new WebSocket('ws://' + window.location.hostname + ':4502/chat');
    }
    else if ('MozWebSocket' in window) {
        websocket = new MozWebSocket('ws://' + window.location.hostname + ':4502/chat');
    }
    else {
        //not supported
        return;
    }
}

WebSocket版本和向后兼容性

http://websocket.org/echo.html网站已更新-它与FF7工作:

一旦你点击连接,你会得到一个关于MozWebSocket对象的"警告":此浏览器使用MozWebSocket构造函数

支持WebSocket。

最新更新