我有一个 socket.io 服务器(在 node.js 中),我正在尝试将一个 python 客户端连接到它,主要是为我的套接字服务器提供一个命令行界面。
我正在使用 Python 的 Web 套接字,但是,我意识到这仅支持四个“事件”:打开时、关闭时、错误时和消息时。
我的 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)