2
只有當websocket版本是又名RFC 6455可用時,我想使用Jetty-Server(版本8.1.9)的websockets。如果它不可用,將使用http-fallback-solution。如何在瀏覽器中使用javascript查找websocket協議版本?
[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
}
如果我使用帶有Safari 5.0.2的iPad連接到Jetty服務器(顯然使用較舊的websocket協議)我得到一個警告: 警告:oejw.WebSocketFactory:不支持WebSocket的版本:2147483647
我無法找到一種方式來獲得訪問或更改JavaScript中的握手請求。這是不可能的嗎?任何解決方法?
'2147483647'似乎是相當先進的,如果目前的版本是'13' :-) – Bergi 2013-03-21 15:46:59