2011-12-14 73 views
0

我想通過pywebsocket的幫助讓WebSocket在Apache服務器上運行。 服務器現在已經安裝好了,我可以通過Chrome做一個Websocket連接。但是,當我試圖通過Safari建立連接時,我得到一個「意外的響應代碼:404」,並且它看起來不能與服務器建立WebSocket連接。WebSockets:讓Safari與pywebsockets一起工作Apache擴展

任何指針在這裏將不勝感激。下面是我正在調用的客戶端JS代碼,用於建立連接以及safari頭標記與Chrome頭標記。

function connect() { 
     if ('WebSocket' in window) { 
      socket = new WebSocket("ws://localhost/mystream"); 
     } else if ('MozWebSocket' in window) { 
      socket = new MozWebSocket("ws://localhost/mystream"); 
     } else { 
      return; 
     } 

    socket.onopen = function() { 
     showResult('Opened'); 
    }; 
    socket.onmessage = function (event) { 
     showResult(event.data); 
    }; 
    socket.onerror = function() { 
     showResult('Error in connection'); 
    }; 
    socket.onclose = function (event) { 
     var logMessage = 'Closed ('; 
     if ((arguments.length == 1) && ('CloseEvent' in window) && (event instanceof CloseEvent)) { 
      logMessage += 'wasClean = ' + event.wasClean; 
      if ('code' in event) { 
       logMessage += ', code = ' + event.code; 
      } 
      if ('reason' in event) { 
       logMessage += ', reason = ' + event.reason; 
      } 
     } else { 
      logMessage += 'CloseEvent is not available'; 
     } 
     showResult(logMessage + ')'); 
    }; 

    showResult('Successfully Connected '); 
} 

野生動物園頭:

Origin: http://192.168.1.8 
Sec-WebSocket-Key1: 26 ~ 5 75G3 36< 0 U8T 
Connection: Upgrade 
Host: localhost 
Sec-WebSocket-Key2: 1<A 9 4 4l865P5/6L5 
Upgrade: WebSocket 

鉻頭:

Connection:Upgrade 
Host:localhost 
Origin:http://192.168.1.8 
Sec-WebSocket-Key:IAkX9XGWsCZHPQepzYjwxA== 
Sec-WebSocket-Version:13 
Upgrade:websocket 
(Key3):00:00:00:00:00:00:00:00 

回答

0

更新

那些薩法爾我的標題是協議的舊版本:Hixie-76。 Hixie-76與Web服務器集成方面的友好程度要低很多,因爲在頭文件後面發送了特殊數據(key3)。我懷疑Safari會在下一個版本或兩個版本中更新到新版本的協議(HyBi)。

HyBi-76握手發生在handshake/hybi00.py您可能會嘗試添加一些調試以嘗試找出它失敗的位置。特別要確保_get_challenge實際上獲得了頭部後發送的挑戰的最後8個字節(key3)(這是使得在Web服務器中處理Hixie-76變得複雜的部分)。

+0

根據pywebsockets網站上的文檔,Hixie-76似乎在websocket協議實現列表中得到支持。 – baradas 2011-12-15 02:53:39

1

現在管理它的工作。 Safari(5.1)和移動Safari都需要Hixie-75標誌,該標誌在pywebsockets中有實驗支持。問題出現在apache conf文件中,該條目應該是全部小寫的(即),但樣本條目在CamelCase中有()。恢復爲全部小寫解決了這個問題。