是否可以:获取cookie?检索没有事件名称的响应? python-socketio(客户端)

时间:2019-07-11 00:09:58

标签: python socket.io python-socketio

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

另一个问题,是否可以从.emit中获得答案而无需通过@sio.event@sio.on()与websockets库一样:

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

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

例如,我从客户端发送:sio.emit("GetNbrPlayers"),但是服务器在数据之前没有事件的情况下回答了我[{"data": "5"}](这也是使用socket.io的服务器/ api),我想来获取此消息,但是在事件发生时无法打开,因为答案中没有事件名称。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

  

可以检索会话cookie,

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

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

  

是否可以通过.emit而不通过@ sio.event或@ sio.on()获得答案?

是的,您可以为此使用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()将emit和callback处理合并为一个函数调用:

data = sio.call("GetNbrPlayers")