def on_connect(sid, environ): """ 当客户端连接时做的事情 如果方法返回False,表示服务器拒绝客户端的socketio连接, :param environ: dict :return: """ # print('sid={}'.format(sid)) # print('environ={}'.format(environ)) timestamp = time.time() sio.emit('notify', { 'msg': 'Hello, this is notify event', 'timestamp': timestamp }) # send -> event 'message' sio.send({'msg': 'Hello, this is message event', 'timestamp': timestamp}) # 解析environ字典,取出查询字符串中传递的token request = Request(environ) token = request.args.get('token') # print('token=>{}'.format(token)) # 验证token,获取用户身份 if token: payload = verify_jwt(token, JWT_SECRET) # print('payload->{}'.format(payload)) if payload is not None: user_id = payload['user_id'] # 将用户添加到专属房间,房间编号为用户id,方便flask web那边的业务可以直接给user_id对应的房间发送消息 sio.enter_room(sid, str(user_id)) return return False
def on_message(sid, data): """ 接收message事件消息时执行 """ print('sid={} data={}'.format(sid, data)) msg_data = { 'msg': 'I have received your msg: {}'.format(data), 'timestamp': round(time.time() * 1000) } sio.send(msg_data, room=sid)
def on_flask(sid, data): # 客户端发送的消息内容 print('sid=={},data=={}'.format(sid, data)) # 默认回复,后续可以对接NLP自然语言处理,或是图灵机器人 msg_data = { 'message': 'I received your message {}'.format(data), 'time_stamp': round(time.time() * 1000) } sio.send(data=msg_data, room=sid)
def on_message(sid, data): """ 客户端向服务器发送聊天的事件消息时 被调用 :param sid: :param data: :return: """ # 获取用户说的信息 data # TODO 使用rpc 调用聊天机器人子系统 获取回复内容 msg_data = { 'msg': 'I have received your msg: {}'.format(data), 'timestamp': round(time.time()*1000) } sio.send(msg_data, room=sid)
def on_message(sid, data): """ 与前端约定前端发送的聊天类型为message :param sid:string sid 是发送的聊天数据事件类型也是message类型 :param data:data是客户端发送的信息数据 与前端约定好 前端发送的数据格式也是 { 'msg':xx, 'timestamp':xxx } :return: """ # TODO 此处使用rpc调用聊天机器人系统 获取聊天恢复内容 resp_data = { "msg": 'I have received your msg: {}'.format(data.get('msg')), "timestamp": round(time.time() * 1000) } sio.send(resp_data, room=sid)
def on_message(sid, data): """ 与前端约定好,前端发送的聊天数据事件类型也是message类型 :param sid: string sid是发送此事件消息的客户端id :param data: data是客户端发送的消息数据 与前端约定好 前端发送的数据格式也是 { "msg": xx, "timestamp": xxx } :return: """ # TODO 此处使用rpc调用聊天机器人子系统 获取聊天回复内容 resp_data = { "msg": 'I have received your msg: {}'.format(data.get('msg')), "timestamp": round(time.time() * 1000) } # sio.emit('message', resp_data, room=sid) sio.send(resp_data, room=sid)
def on_connect(sid, environ): sio.send(data='welcome', room=sid) sio.enter_room(sid, room="100") # 将该sid用户加入到房间中
def the_msg(sid, msg): print(msg) sio.send(data="该sid所在所有房间号:{}".format(sio.rooms(sid))) sio.emit("chat", data="hello", room=sid) # 发给用户 # sio.send(data="house 房间群发消息", room="house", skip_sid=sid) sio.send(data="house 房间群发消息", room="house") # 发给房间里的每一个sid