Отправить строку в веб-сокет Python, используя JavaScript

1

У меня есть локально работающий 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');
};
Теги:
websocket

1 ответ

2

Ваш сервер Python реализует обычный TCP-сервер, но ваш JS-код действует как клиент WebSocket, который является фактически правильным протоколом поверх TCP: https://tools.ietf.org/html/rfc6455

Если вы хотите, чтобы оба конца правильно связывались, вам нужно запустить сервер WebSocket, например: https://github.com/dpallot/simple-websocket-server

  • 0
    Спасибо, это понятно, тогда, может быть, веб-сокеты - это не тот путь? Могу ли я вместо использования сервера веб-сокетов просто передавать переменные на TCP-сервер Python?
  • 0
    @WillemvanOpstal Если вы собираетесь запускать код JS в браузере, вы ограничены выбором протоколов, которые вы можете использовать (HTTP, HTTPS, WebSockets или WebRTC), которые должен поддерживать сервер.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню