@socketio.on(‘message’)
def handle_message(message):
print('received message: ’ + message)
上面的示例使用字符串消息。另一种类型的未命名事件使用 JSON 数据:
@socketio.on(‘json’)
def handle_json(json):
print('received json: ’ + str(json))
最灵活的方式是使用自定义事件名称,在开发过程中最常用的也是这种方式。
事件的消息数据可以是字符串,字节,整数或 JSON:
@socketio.on(‘my event’)
def handle_my_custom_event(json):
print('received json: ’ + str(json))
自定义命名事件也可以支持多个参数:
@socketio.on(‘my event’)
def handle_my_custom_event(arg1, arg2, arg3):
print('received args: ’ + arg1 + arg2 + arg3)
Flask-SocketIO 支持 SocketIO 命名空间,允许客户端在同一物理套接字上复用多个独立连接:
@socketio.on(‘my event’, namespace=‘/test’)
def handle_my_custom_namespace_event(json):
print('received json: ’ + str(json))
如果未指定名称空间,'/'
则使用具有名称的默认全局名称空间 。
对于装饰器语法不方便的情况,on_event
可以使用该方法:
def my_function_handler(data):
pass
socketio.on_event(‘my event’, my_function_handler, namespace=‘/test’)
客户端可以请求确认回叫,确认收到他们发送的消息。处理函数返回的任何值都将作为回调函数中的参数传递给客户端:
@socketio.on(‘my event’)
def handle_my_custom_event(json):
print('received json: ’ + str(json))
return ‘one’, 2
在上面的示例中,将使用两个参数调用客户端回调函数,'one'
和2
。如果处理程序函数未返回任何值,则将调用客户端回调函数而不带参数。
发送消息
如上一节所示定义的 SocketIO 事件处理程序可以使用send()
和emit()
函数将回复消息发送到连接的客户端。
以下示例将收到的事件退