2013-03-21 1 views
2

Я бы хотел использовать websockets с Jetty-Server (версия 8.1.9) только в том случае, если версия websocket aka RFC 6455. Если его не доступно, будет использоваться http-fallback-solution.Как узнать версию протокола websocket в браузере с помощью javascript?

[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 
} 

Если я подключитесь к Jetty-Server с помощью iPad с Safari 5.0.2 (который, как правило, использует старый протокол websocket), я получаю предупреждение: WARN: oejw.WebSocketFactory: неподдерживаемая версия WebSocket: 2147483647

Я не мог найти способ, чтобы получить доступ или изменить запрос квитирования в JavaScript. Это невозможно? Какие-нибудь обходные пути для этого?

+2

'2147483647', кажется, весьма прогрессивным, если текущая версия' 13' :-) – Bergi

ответ

0

Возможно, это предложение, поскольку на данный момент мы не можем получить какие-либо свойства, которые образуют объект 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; 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^