python - 如何在 Flask-SocketIO 中向测试客户端推送通知?

标签 python sockets socket.io flask-socketio flask-sockets

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

客户:

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 channel ,但并未被触发。但是,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 脚本。

关于python - 如何在 Flask-SocketIO 中向测试客户端推送通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38773484/

相关文章:

python - 当 pip 设置为需要 virtualenv 时,如何允许 pip 进入 anaconda3 venv?

Android 套接字不会通过 .connect() 函数连接,只有 new Socket()

javascript - 在 socket.emit() 中传递参数的问题

python - 在整个数据集上计算 TF-IDF 还是仅在训练数据上计算 TF-IDF?

python - 我是否需要将 multiprocessing.Queue 实例变量显式传递给在实例方法上执行的子进程?

java - 套接字积压行为

java - 检测损坏的 socket

socket.io - 如何使用 Visual Studio Code 在 TypeScript 中使用 Socket.IO?

C++ - websocket 客户端 n 服务器

python - 如何使用 id 连接数据帧行中的字符串?