javascript - 如何使用 javascript 在浏览器中找出 websocket 协议(protocol)版本?

标签 javascript browser websocket jetty-8

只有当 websocket 版本为 13 又名 RFC 6455 可用时,我才想将 websockets 与 Jetty-Server(版本 8.1.9)一起使用。如果它不可用,将使用 http-fallback-solution。

[random Browser Javascript]  <--websocket v13 only--> [Jetty Server Java]

websocket-protocol-version 存储在 WebSocket 握手请求中:

GET /mychat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat
Sec-WebSocket-Version: 13
Origin: http://example.com

现在我想在 javascript 中有这样的东西:

if (window.WebSocket)
{
    // browser supports websockets
    if (bla.websocketversion != 13)
    {
        // wrong websocket version
        // use fallback connection
    }
    else
    {
        // use websockets
    }
}
else
{
    // use fallback connection
}

如果我使用装有 Safari 5.0.2 的 iPad 连接到 Jetty-Server(它似乎使用了较旧的 websocket 协议(protocol)),我会收到警告: 警告:oejw.WebSocketFactory:不支持的 Websocket 版本:2147483647

我找不到在 Javascript 中获取访问权限或更改握手请求的方法。不可能吗?有什么解决方法吗?

最佳答案

这可能是一个建议,截至目前我们无法从 websocket 对象获取任何属性。所以我们可以在特定时间内测试 websocket 连接。这可能是一种临时解决方法。

此解决方法仅在连接未建立时,websocket 就绪状态仍在连接中

function init()
{

  _ws = new WebSocket("ws://example.com");

  _ws.onopen = onopen();

  _ws.onclose = onclose();

   setTimeout(function () {connectionCheck(_ws)}, 5000);

}


function connectionCheck(_ws)
{


   if(_ws.readyState == 0)
   {
      //call your fallback sollution
   }
   else
   {
      return;
   }
}

关于javascript - 如何使用 javascript 在浏览器中找出 websocket 协议(protocol)版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15551898/

相关文章:

c# - Coldfusion - 如何实时更新表格单元格?

javascript - Closure Conditional - 当这个返回函数没有作为参数传递时,它如何获取设置为参数的值?

javascript - 带有图像和文本的淡入、淡出 div(使用 jquery)

testing - 如何通过终端中的一个命令行同时在多个浏览器中使用 RobotFramework 运行整个测试套件?

javascript - 在什么情况下我可以从托管网站访问子 IFrame 的 HTML-DOM?

javascript - 浏览器上的图像和文本剪辑工具如何工作? (Evernote、剪贴板、snip.it 等)

javascript - node.js 和 javascript websockets 通信

python - aiohttp 和 websockets 之间的区别/兼容性是什么?

javascript - 从 vb.net 中的模态窗口调用 javascript 函数

javascript - 如何在 Select2 中先设置占位符