Esempio n. 1
0
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
Esempio n. 2
0
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)
Esempio n. 3
0
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)
Esempio n. 4
0
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)
Esempio n. 5
0
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)
Esempio n. 6
0
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)
Esempio n. 7
0
def on_connect(sid, environ):
    sio.send(data='welcome', room=sid)
    sio.enter_room(sid, room="100")  # 将该sid用户加入到房间中
Esempio n. 8
0
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