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
Beispiel #2
0
def on_connect(sid, envrion):
    request = Request(envrion)
    token = request.args.get('token')
    user_id = _get_user_id(token)
    # 用户一连接im服务器, 就让其进入自己的用户id对应的房间  room="2"
    print("进入房间: %s" % user_id)
    sio.enter_room(sid, str(user_id))
Beispiel #3
0
def on_connect_notify(sid, environ):
    """
    当客户连接时被执行
    :param sid:
    :param environ: dict 解析客户端握手的http数据
    :return:
    """
    # 借助werkzeug提供的Request类,将environ字典转换为我们熟悉的request对象,从对象中读取属性的方式来获取客户端的请求信息
    request = Request(environ)  # 等价于flask 的request对象

    # 从查询字符串中取出jwt token
    token = request.args.get('token')

    # 验证jwt token
    # 如果有效 取出了user_id 将用户添加到user_id的房间
    user_id = check_jwt_token(token)
    if user_id is not None:
        sio.enter_room(sid, str(user_id))
Beispiel #4
0
def on_connect(sid, environ):
    """
    与客户端建立好连接后执行
    :param sid: string sid是socketio为当前连接客户生成的识别id
    :param environ: dict 在连接握手数据(HTTP报文解析之后的字典)
    :return:
    """
    # 前端连接socketio服务器时候,携带的的查询字符串中包含的token 是随着第一次websocket握手的http报文携带
    # 可以通过environ取出
    # 借助werkzeug工具集 来帮助我们解读 客户端请求http数据
    request = Request(environ)
    # 对于接毒出来的request对象,可以像在flask中使用一样来读取数据
    token = request.args.get('token')
    if token is not None:
        payload = verify_jwt(token, JWT_SECRET)
        if payload is not None:
            user_id = payload.get('user_id')
            # 将用户加入用户id名称的房间
            sio.enter_room(sid, str(user_id))
Beispiel #5
0
def on_connect(sid, environ):
    sio.send(data='welcome', room=sid)
    sio.enter_room(sid, room="100")  # 将该sid用户加入到房间中
Beispiel #6
0
def connect_handler(sid, environ):
    print('Connection request')
    sio.emit("start",data="欢迎连接",room=sid)
    sio.enter_room(sid,room="house")
Beispiel #7
0
async def start_chat(sid, message):
    sio.enter_room(sid, message['question_id'])
    await sio.emit('entered', {'success': True}, room=sid)
Beispiel #8
0
Datei: chat.py Projekt: Wjun0/nh
def on_connect(sid, envroin):
    """连接时触发
    """
    request = Request(envroin)
    sio.enter_room(sid)