首页 > 解决方案 > 从 python 代码连接到 Flask websocket

问题描述

我有兴趣在 Flask 服务器和客户端之间创建双向交换。似乎 websockets 对于实现我的目标非常方便。但我坚持实施。我已经使用 Flask-SocketIO 创建了简单的 Flask 应用程序,如文档中所述:

from flask_socketio import SocketIO
from flask import Flask

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@socketio.on('message')
def handle_message(message):
    print('received message: ' + message)

if __name__ == '__main__':
    socketio.run(app)

客户端使用 websocket-client 包,如下所示:

from websocket import create_connection

ws = create_connection("ws://localhost:5000")
ws.send("hello world")

在这种配置中它不起作用。

我还尝试在服务器端使用 Flask-Sockets:

from flask import Flask
from flask_sockets import Sockets    

app = Flask(__name__)
sockets = Sockets(app)


@sockets.route('/')
def echo_socket(ws):
    while not ws.closed:
        message = ws.receive()
        print(message)

if __name__ == '__main__':
    app.run()

它也不起作用。我在某些地方(例如therethere)发现了几篇带有“工作”示例的帖子,但实际上它们都不起作用。

那么有可能做我需要的吗?如果是,该怎么做?如果不是,有什么替代方案?

标签: pythonflaskwebsocket

解决方案


flask sokets.io 实际上不是 websockets,它们是 SocketsIO。如果有人想在他的烧瓶应用程序中集成真正的 WebSocket,他可以使用这个项目。


推荐阅读