如何将通知推送到 Flask-SocketIO 中的测试客户端?

How to push notifications to Test Client in Flask-SocketIO?

我正在尝试作为客户端接收来自服务器的推送;使用我的测试客户端如下:

客户:

socket_client = socketio.test_client(app)
@socketio.on('hit_client')
def recieve_message(json_data):
    print("Server has called!")

服务器:

socketio.emit('hit_client', 'Hi Client!')

服务器应该正在推送和调用 hit_client 通道,但并未触发。但是,socket_client.get_received() 有发出的数据。我认为 WebSockets 的全部意义在于双向通信(即推送函数触发器)!

这是一个非常简单的设置,它甚至似乎没有工作...任何帮助将不胜感激。我已经敲了好几个小时的脑袋了。

测试客户端不是 Socket.IO 客户端。它的唯一目的是帮助您为 Socket.IO 服务器编写单元测试。它在概念上类似于 Flask 的 HTTP 路由测试客户端。只有在单元测试中使用它才有意义。

当服务器向客户端发送某些内容时,测试客户端将仅存储它并通过 get_received 调用在您的测试代码中访问它。它不会触发任何事件,因为这不是它的预期目的。

如果您想在 python 中实现 Socket.IO 客户端,可以使用一个包:https://pypi.python.org/pypi/socketIO-client。使用此包,您可以编写连接到 Socket.IO 服务器并可以发送和接收事件的 Python 脚本。