如何使用javascript/html5中的web套接字与python通信

如何使用javascript/html5中的web套接字与python通信,javascript,html,python-2.7,websocket,Javascript,Html,Python 2.7,Websocket,我在尝试使用WebSocket在python和javascript之间进行通信时遇到了问题 这是我的python服务器(ws.py),它只打印出它接收到的任何数据并将其重新发送到客户端: #!/usr/bin/env python # Echo server program import socket HOST = '' PORT = 50007 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PO

我在尝试使用WebSocket在python和javascript之间进行通信时遇到了问题

这是我的python服务器(ws.py),它只打印出它接收到的任何数据并将其重新发送到客户端:

#!/usr/bin/env python

# Echo server program
import socket

HOST = ''   
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
   data = conn.recv(1024)
   if not data: break
   print 'Data recieved =', data
   conn.sendall(data)
conn.close()
这对于使用
nc localhost 50007的netcat很好,但是当我尝试使用html/Javascript客户端时,我得到了一个连接,但是服务器没有收到消息,我只得到以下消息:

Connected by ('127.0.0.1', 62264)
Data recieved = GET / HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:50007
Origin: http://localhost
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: 6hxDWShxMnFxwGYAWym+eg==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: x-webkit-deflate-frame
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.71 Safari/537.36
Cookie: SQLiteManager_currentLangue=2
这就是我在Chrome控制台上得到的结果:

WebSocket connection to 'ws://localhost:50007/' failed:  basicWSoc.html:7
Error Logged: [object Event] 
这是我的web客户端(basicWSoc.html)


函数WebSocketTest()
{
var connection=newwebsocket(“ws://localhost:50007”);
connection.onopen=函数(){
connection.send('Hello,Server!!');//打开连接后向服务器发送消息。
};
connection.onerror=函数(错误){
console.log('记录的错误:'+错误);//记录错误
};
connection.onmessage=函数(e){
console.log('从服务器接收:'+e.data);//记录接收到的消息
};
}
现在我仍然是python的新手,Web套接字对我来说是全新的,所以我可能对显而易见的


非常感谢@SLaks向我指出,我使用的是TCP套接字,而不是Web套接字。我将Python服务更改为使用实现web套接字的库,这使我能够连接到web客户端并在它们之间成功通信

web套接字是一种特定的协议,而不是原始套接字。您需要一个PythonWebSocket服务器。@sLaks您有什么建议,我可以在哪里找到像我所做的那样基本的示例?我看过的任何地方代码都很重,我发现很难理解。如果需要的话,我不介意使用库,我只希望我的python脚本尽可能直接possible@SLaks当我使用socket.SOCK\u STREAM
时,我还使用原始套接字吗?我认为这使用的是TCP?Web套接字是建立在TCP之上的协议。您需要实现这个协议。@SLaks好的,谢谢,我已经用
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
  function WebSocketTest()
  {
    var connection=new WebSocket("ws://localhost:50007");
    connection.onopen = function () {
      connection.send('Hello, Server!!'); //send a message to server once connection is opened.
    };
    connection.onerror = function (error) {
      console.log('Error Logged: ' + error); //log errors
    };
    connection.onmessage = function (e) {
      console.log('Received From Server: ' + e.data); //log the received message
    };
}
</script>
</head>
<body>
<div id="sse">
   <a href="javascript:WebSocketTest()">Run WebSocket</a>
</div>
</body>
</html>