2012-06-01 17 views
3

Firefox無法在ws://192.168.0.155:5555/socket/server3.php建立與服務器的連接。Web套接字在Firefox中不起作用12

$(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); 
    } 

wts錯我的代碼?

+0

我不是這方面的專家,但我已經看到它使用'http://'而不是'ws://'。你試過了嗎? –

+3

套接字不適用於http請求.socket主要用於tcp,udp,ssl等,但不適用於http。 websocket使用ws協議進行套接字連接,在這種情況下,它是ws .... –

+0

Firefox 12可以正常使用我的簡單websocket服務器。你想要連接什麼服務器?另外,當你嘗試連接時會發生什麼(例如拋出異常)?值得添加一個onerror函數並記錄對它的調用。 – simonc

回答

2

從您的一條評論中,我認爲您在服務器上使用phpwebsocket。這個項目似乎沒有得到維護,並沒有跟上websocket協議規範的變化。

使用中有兩個不兼容的websocket協議版本。 Safari仍然使用phpwebsocket實現的原始(現已棄用的)Hixie變體; Firefox,IE10和Chrome使用較新的Hybi變種。

要測試這一點,你可以嘗試使用Safari來執行你的JavaScript。

如果你想在服務器上使用PHP並且需要支持比Safari更多的功能,我不確定你有什麼選項。我可以看到一個支持上面列出的所有瀏覽器的open source server。另外,如果你想嘗試編寫你自己的服務器,在websocket標籤下有很多問題,你可以從中獲取靈感。