У меня есть сервер socket.io (в node.js), с которым я пытаюсь подключиться к клиенту python, в основном для обеспечения интерфейса командной строки для моего сервер сокетов.Подключение клиента Python к Socket.io с пользовательскими событиями socket.io
Я использую веб-сокеты Python, однако я понял, что это поддерживает только четыре «события»: при открытии, при закрытии, при ошибке и при сообщении.
Мой сервер socket.io определяет пользовательские события, такие как .on('connection')
. Как я могу испускать/получать такие настраиваемые события в python?
Вот мой сценарий до сих пор, который только начинается и закрывается, и поэтому он не работает. импорта веб-сокетов, запросы, нить, время хост = «http://socket-url-server.com»
def on_open(ws):
def run(*args):
print 'did connect'
for i in range(3):
time.sleep(1)
result = ws.recv()
print 'received:'
print result
time.sleep(1)
ws.close()
print "thread terminating..."
thread.start_new_thread(run,())
def on_message(ws, message):
print message
def on_error(ws, error):
print error
def on_close(ws):
print "### closed ###"
print('Connecting to %s' % host)
socket = host.replace('http://', 'ws://')
print socket
websocket.enableTrace(True)
_ws = websocket.WebSocketApp(socket,
on_message = on_message,
on_error = on_error,
on_close = on_close)
_ws.on_open = on_open
_ws.run_forever()
Какая библиотека/метод следует использовать иначе? Если я сделаю рукопожатие и возьму сам ключ сервера socket.io, как я могу испускать/получать события после этого?
Я также попытался с помощью https://pypi.python.org/pypi/socketIO-client, но документация очень беден
Я написал следующий сценарий для него ниже, но я получаю No handlers could be found for logger "socketIO_client"
и он просто висит вечно.
from socketIO_client import SocketIO, BaseNamespace
class Namespace(BaseNamespace):
def on_connect(self):
print '[Connected]'
socketIO = SocketIO('http://socket-server-url.com', 80, Namespace)
socketIO.wait(seconds=1)
На самом деле я хотел оставить комментарий, но мой кредит не позволил бы мне это сделать. Я ответил на это. –
Кстати, вы должны позволить объекту SIO ждать каждый раз, когда вы излучаете сообщение, иначе он не будет работать должным образом. Я все еще смущен его целью. –