2015-01-21 39 views
0

我創建了一個WebSockets連接從我的網站到我的家庭服務器運行一個python腳本監聽端口3000.我可以連接到服務器就好了,因爲服務器記錄客戶端連接時我加載我的頁面。但是,每次連接到服務器時,服務器都會自動激發我的服務器receivedMessage()函數,並打印出一連串關於連接的垃圾信息。這些服務器日誌如下:Websockets發送垃圾到服務器

A new client has connected 
Message Received: GET/HTTP/1.1 
Host: [Insert host name and port here] 
Connection: Upgrade 
Pragma: no-cache 
Cache-Control: no-cache 
Upgrade: websocket 
Origin: null 
Sec-WebSocket-Version: 13 
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.99 Safari/537.36 
Accept-Encoding: gzip, deflate, sdch 
Accept-Language: en-US,en;q=0.8 
Sec-WebSocket-Key: 3DUmKD70X9p19IpLPjS2jg== 
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits 

的代碼片段連接到服務器是很簡單的:

var theSocket = new WebSocket("ws://[insert host name]:3000"); 

    theSocket.onopen = function() { 
     // Web Socket is connected, send data using send() 
     theSocket.send("blah"); 
     alert("SENT"); 
    }; 

還警告框一直沒有出現運行上面的腳本時。什麼導致所有的連接細節打印,如何讓它發送一個簡單的字符串,併成功彈出警告框?

回答

1

它很可能是您的WebSocket不會從CONNECTING轉換爲OPEN,因此永遠不會調用onopen函數。您需要確保您的python腳本正在通過服務器端的Web Socket Handshake

+0

事實上,我的JavaScript控制檯剛剛打印出「WebSocket連接到'ws:// {HOSTNAME]:3000 /'失敗:WebSocket打開握手被取消'使我認爲你是正確的 – Aimee 2015-01-21 09:38:07

+0

只是試圖瞭解 - 上面仍然沒有回答爲什麼當連接不成功時WS服務器正在打印垃圾信息,這是否是一些默認的WS行爲 – goldenmean 2015-01-22 11:52:13

+0

正確的,如果你看第一部分的鏈接文章,你可以看到websocket客戶端會發送一個「標準的」http請求,這是Aimee在他們的服務器打印中看到的,在沒有python服務器代碼的情況下很難多說。 – 2015-01-23 08:22:53