Pickto
@Pickto

JS клиент и Python сервер, как передавать данные через socket?

Есть сервер на Python:
import socket
import config
from time import sleep


s = socket.socket()
s.bind(('', 9090))
s.listen(1)
s_, ip = s.accept()
while True:
    mess = s_.recv(1024)
    if config.questbool == True:
        s_.send("1")
        print(1)
    else:
        s_.send("0")
        print(0)

    sleep(1)


И есть клиентская часть на JS
var s = io.connect('http://localhost:9090')

function H() {
	s.send('send');
	mess = s.request;
	alert(mess);
}

setInterval(H, 1000)

Вопрос, как заставить принимать данные с сервера клиенту JS? +Python должен постоянно отправлять данные в клиент Js, пока запущен сервер.
(В представленном коде сервер выдает ошибку:Traceback (most recent call last):
А клиент выдает Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на localhost:9090/socket.io/?EIO=3&transport=polling&... (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).(неизвестен)
)
Камнями сильно не кидайтесь, если ответ очевиден.
  • Вопрос задан
  • 4644 просмотра
Решения вопроса 2
@asd111
Дело в том что на клиенте вы используете протокол websocket, а на сервере чистые tcp сокеты. Если вам нужен websocket на python, то посмотрите https://flask-socketio.readthedocs.io/en/latest/ он самый простой на мой взгляд.
Если хотите делать протокол самостоятельно то вот спецификация https://tools.ietf.org/html/rfc6455
Ответ написан
@nirvimel
Для современного асинхронного WebSocket-сервера на Python выбор библиотеки фактически сводится к:
  1. https://github.com/KeepSafe/aiohttp - эталонный HTTP-клиент и сервер под asyncio, среди прочего есть поддержка WebSocket на клиенте и на сервере.
  2. https://github.com/crossbario/autobahn-python - (по историческим причинам) эталонная реализация WebSocket на Python под asyncio или twisted; остальные реализации обычно сверяют свой функционал с ней.
  3. https://github.com/aaugustin/websockets - под asyncio.
  4. https://github.com/Lawouach/WebSocket-for-Python (AKA ws4py) - под asyncio или gevent или CherryPy.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы