1

我使用 python socket.io 客户端,我想知道是否可以检索会话 cookie,如果可以,如何?

另一个问题,是否有可能在不经过 or 的情况下从 .emit 获得@sio.event答案@sio.on()与 websockets 库一样:

websocket.send('Hi')
response = websocket.rcv()
print(response) -> "Hi :)"

如果不是,是否可以创建一个事件/on 从服务器检索不包含事件名称的消息?

例如,我从客户端发送:sio.emit("GetNbrPlayers")但是服务器[{"data": "5"}]在数据之前没有事件就回答我(它也是一个使用 socket.io 的服务器/api),我想收到这个消息,但是有一个事件/on 是不可能的,因为有答案中没有事件名称。

先感谢您!

4

1 回答 1

0

可以检索会话cookie,

会话 cookie 是什么意思?如果您的意思是 Flask 会话 cookie,那么不,没有会话 cookie。用户会话存储在服务器中,而不是 cookie 中。

如果您的意思sid是包含分配给客户端的会话 id 的 cookie,您可以从sid客户端对象的属性中获取此 id,例如 as sio.sid

是否可以在不通过@sio.event 或@sio.on() 的情况下从.emit 获得答案?

是的,您可以为此使用 Socket.IO 协议的“ack”功能。如果服务器是 Python 服务器,您可以只从处理函数返回响应。例如:

@sio.event
def GetNbrPlayers():
    return [{"data": "5"}]

在 Python 客户端中,您有两种方式来接收此信息。您可以使用回调函数:

def get_response(data):
    print(data)

sio.emit("GetNbrPlayers", callback=get_response)

或者您可以使用call()而不是emit()将发出和回调处理组合到一个函数调用中:

data = sio.call("GetNbrPlayers")
于 2019-07-11T21:54:41.170 回答