Enviar mensaje WebSocket desde la vista Frask

Estoy tratando de hacer una aplicación Flask que utiliza WebSockets. El ejemplo de Flask-sockets funciona, pero ¿cómo puedo enviar un mensaje desde una vista normal?

De manera similar a cómo Flask-SocketIO usa .emit() y .send() -methods.

En el siguiente ejemplo (del ejemplo de Flask-Sockets) me gustaría, por ejemplo, poder transmitir un mensaje desde la vista de hello .

 from flask import Flask from flask_sockets import Sockets app = Flask(__name__) sockets = Sockets(app) @sockets.route('/echo') def echo_socket(ws): while not ws.closed: message = ws.receive() ws.send(message) @app.route('/') def hello(): # How can I send a WebSocket message from here? return 'Hello World!' if __name__ == "__main__": from gevent import pywsgi from geventwebsocket.handler import WebSocketHandler server = pywsgi.WSGIServer(('', 5000), app, handler_class=WebSocketHandler) server.serve_forever() 

Puede utilizar una lista de socket global de todos los clientes. Recorra toda la lista y envíe un mensaje a toda la instancia de ws.

Código de ejemplo;

 from flask import Flask, render_template from flask_sockets import Sockets app = Flask(__name__) sockets = Sockets(app) ws_list = [] @sockets.route('/echo') def echo_socket(ws): ws_list.append(ws) while not ws.closed: message = ws.receive() ws.send(message) @app.route('/') def hello(): # How can I send a WebSocket message from here? return render_template('index.html') @app.route('/send_message_to_all_client') def broadcast(): for ws in ws_list: if not ws.closed: ws.send("broadcast message") else: # Remove ws if connection closed. ws_list.remove(ws) return "ok" if __name__ == "__main__": from gevent import pywsgi from geventwebsocket.handler import WebSocketHandler server = pywsgi.WSGIServer(('', 5000), app, handler_class=WebSocketHandler) server.serve_forever()