У меня проблема с попыткой связи между python и javascript с помощью WebSockets.Как использовать веб-сокеты в javascript/html5 для связи с 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()
Это прекрасно работает с Netcat с помощью nc localhost 50007
, но когда я пытаюсь с помощью моего 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]
Это мой веб-клиент (basicWSoc.html)
<!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>
Теперь я еще новичок в питона и веб-сокетов совершенно новое для меня, так что я может быть более очевидным, глядя ....
Любая помощь будет принята с благодарностью
Веб-сокеты - это особый протокол, а не сырые сокеты. Вам нужен сервер Python WebSocket. – SLaks
@sLaks у вас были бы рекомендации относительно того, где я мог бы найти пример как основной, как я это сделал? где бы я ни выглядел, очень тяжелый код, и мне трудно понять. Я не против использовать библиотеку, если это то, что нужно Мне просто хотелось бы, чтобы мой скрипт python был как можно более прямым, – jonnie
@SLaks также я все еще использую raw-сокет, когда я использую 'socket.SOCK_STREAM', I думал, что это использует TCP? – jonnie