2015-01-21 62 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