Socketio即时通讯
发布时间 :
字数:375
阅读 :
Socket.IO
pip install python-socketio
以协程方式运行服务端(推荐):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| import eventlet eventlet.monkey_patch() import socketio import eventlet.wsgi sio = socketio.Server(async_mode='eventlet') # 创建socket对象,并指定以协程方式运行 app = socketio.Middleware(sio) # 使用sio创建符合WSGI协议的app对象 @sio.on('监听事件名') 有两个特殊事件: connect(两个参数(sid,environ)):建立连接立即执行,并比其他事件多接收一个参数environ(握手数据)。 disconnect(一个参数(sid)):断开连接立即执行。普通事件可以接收两个参数(sid,data(用户发过来是消息))
def on_函数名(参数): sio.emit('事件名', 要发送的数据) #群发 sio.send(要发送的数据,skip_sid=sid) #跳过sid进行群发 sio.emit('事件名', 要发送的数据,room=room_name) # 只给roon_name房间里的人发送消息 sio.enter_room(sid,房间名) #把sid加入带房间,每次连接时会默认执行一句sio.enter_room(sid,sid) 如果是message消息,可以直接使用sio.send(data, room=room_name)
socket = eventlet.listen(('IP', 端口(整数))) #创建socket对象 eventlet.wsgi.server(socket, app) # 以协程的方式启动服务器
|
web可调用的socketio:
1 2
| mgr = socketio.KombuManager('列队URL') #创建列队对象 sio = socketio.Server(async_mode='eventlet',client_manager=mgr) # 创建socket对象,并指定以协程方式运行
|
视图调用
1 2
| app.mgr = socketio.KombuManager('列队URL') current_app.mgr.emit('事件名', 要发送的数据, room=room_name)
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zoubinbf@163.com