У меня есть локально работающий python websocket (код ниже), который я запускаю бесконечно. В основном я копировал код из примера. В примере используется другой клиентский скрипт python для отправки данных (см. Ниже). Это просто работает как шарм и очень прост; только то, что мне нужно, так как у меня есть некоторый опыт работы на Python, но не знаю, что такое "Интернет/Интернет" -thingies.
Теперь, вместо использования клиента python, я бы хотел отправить сообщение из html-документа с помощью javascript. Есть ли какое-либо руководство в коротком фрагменте "глупых" кодов, просто отправляя одно сообщение (строку) в websocketserver python? Тогда скрипт python сможет выполнять различные процессы с использованием этих данных.
Сервер Python: (работает :))
from socket import *
host = "localhost"
port = 8089
buf = 1024
addr = (host,port)
sock = socket(AF_INET,SOCK_DGRAM)
sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
sock.bind(addr)
print "Websocket active."
print "address:\t"+host+":"+str(port)
while 1:
data,addr = sock.recvfrom(buf)
if not data:
print "Client has exited!"
break
else:
print "\nReceived message '", data,"'"
# Close socket
sock.close()
Клиент Python (работает, но не нужен)
from socket import *
host = "localhost"
port = 8089
buf = 1024
addr = (host,port)
sock = socket(AF_INET,SOCK_DGRAM)
def_msg = "===Enter message to send to server===";
print "\n",def_msg
while (1):
data = raw_input('>> ')
if not data:
break
else:
if(sock.sendto(data,addr)):
print "Sending message '",data,"'....."
sock.close()
И теперь к клиенту Javascript..
Разве это не так просто? ;
var socket = new WebSocket("ws://localhost:8089");
socket.onopen = function () {
alert("alerting you");
socket.send('Pingel');
};
Ваш сервер Python реализует обычный TCP-сервер, но ваш JS-код действует как клиент WebSocket, который является фактически правильным протоколом поверх TCP: https://tools.ietf.org/html/rfc6455
Если вы хотите, чтобы оба конца правильно связывались, вам нужно запустить сервер WebSocket, например: https://github.com/dpallot/simple-websocket-server