用于网站特定页面的带有 Flask 的 SocketIO

SocketIO with Flask for specific page of a website

我有一个 flask 网站,在不同的路径上有不同的应用程序:

@app.route('/')
def index():
    ......

@app.route('app1')
def app1():
    ......
    return render_template('app1.html')

@app.route('app2')
def app1():
    ......
    return render_template('app2.html')

......

app = Flask(__name__)

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

我的问题是如果用户转到该页面,我如何才能拥有另一个 app3,然后使用 SocketIO(因为该网页将处理实时双向通信)但不更改现有结构(其他页面不使用套接字)。

我看到文档正在使用:

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

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

其中运行所有带socket的app

你所做的是正确的。 Socket.IO 服务器只有在客户端连接到它时才会被激活。如果您的 app1app2 页面不启动连接,那么 Socket.IO 服务器会将这些连接传递给 Flask,并且只与 app3 上的客户端交互页面,假设您向该页面添加了一个 Socket.IO 客户端。