如何在浏览器中使用javascript找到websocket协议版本?
How can I find out the websocket-protocol version in a Browser using javascript?
我想使用websockets与Jetty-Server(版本8.1.9)只有当websocket版本是13又名RFC 6455是可用的。如果它不可用,将使用http-fallback解决方案。
[random Browser Javascript] <--websocket v13 only--> [Jetty Server Java]
WebSocket协议版本存储在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
}
如果我使用iPad与Safari 5.0.2(显然使用旧的websocket协议)连接到Jetty-Server,我得到一个警告:警告:oejw。WebSocketFactory:不支持的Websocket版本:2147483647
我找不到在Javascript中获得访问或更改握手请求的方法。不可能吗?有什么解决方法吗?
这可能是一个建议,因为现在我们无法从websocket对象中获得任何属性。因此,我们可以在特定的时间内测试websocket连接。这可能是一个临时解决方案。
此解决方案仅在连接未建立时使用,websocket readystate仍在连接
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;
}
}
相关文章:
- 我如何找到一个句子中的所有空格并替换忽略它们
- 尽管链接成功并已成功下载,但未找到NPM模块
- 正则表达式在字符串中找到base64
- Javascript如何找到滚动事件的来源
- 为什么不'在JQuery中找到第二个css选择器的工作
- chrome在WebSocket握手期间获取新错误
- ReactJS和SpringDataRest缓存问题可能与websocket有关
- 如何在jquery中找到鼠标滚轮/触摸移动事件的走向
- 在哪里可以找到RXUI Javascript'时间飞逝'实例
- Node.js上的WebSocket,并在所有连接的客户端之间共享消息
- 在哪里可以找到'项目'在plothover函数中
- Tomcat websocket is not working
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 如何找到家长's的子级,使用querySelector而不是jQuery
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- 如何使用Javascript在给定的句子中找到大写单词并在其前面添加一个字符
- WebSocket握手:意外的响应代码:404
- Websocket错误:Websocket握手过程中出现错误:状态行中没有找到响应代码
- 如何在浏览器中使用javascript找到websocket协议版本?
- 需要为MQTT找到安全Websocket代理