Веб-сокет не работает в Firefox 12

Firefox не может установить соединение с сервером по адресу ws://192.168.0.155:5555/socket/server3.php.

$(document).ready(function(){
if(!("WebSocket" in window)){
alert('not available');
}else{
_init(); 
}
});
function _init(){
     var websocket;
     var host = 'ws://192.168.0.155:5555/socket/server3.php';
     try{
     websocket = new WebSocket(host);
     websocket.onopen = function(evt){ onOpen(evt); };
     websocket.onclose = function(evt) { onClose(evt); };
     websocket.onmessage = function(evt) { onMessage(evt); };
     }catch(exception){
     alert(exception);
     }
     }

  function onOpen(evt){
    $('.logger_screen').append('Connected');
      }

  function onClose(evt){
      $('.logger_screen').append('Disconnected');
       }

  function onMessage(evt){
    $('.logger_screen').append(evt.data);
   }

что не так с моим кодом?

1 ответ

Решение

Из одного из ваших комментариев я думаю, что вы используете phpwebsocket на сервере. Похоже, что этот проект не поддерживается и не обновляется с изменениями в спецификации протокола websocket.

Используются две несовместимые версии протокола websocket. Safari по-прежнему использует оригинальный (ныне устаревший) вариант Hixie, который реализует phpwebsocket; Firefox, IE10 и Chrome используют более новый вариант Hybi.

Чтобы проверить это, вы можете попробовать использовать Safari для выполнения вашего JavaScript.

Я не уверен, какие варианты у вас есть, если вы хотите использовать PHP на сервере и должны поддерживать больше, чем Safari. Я вижу один сервер с открытым исходным кодом, который должен поддерживать все браузеры, перечисленные выше. В качестве альтернативы, если вы хотите попробовать написать свой собственный сервер, здесь, под тегом websocket, есть немало вопросов, на которые вы можете черпать вдохновение.

Другие вопросы по тегам