发出发布请求后如何向客户端发送消息?我将 post 请求中的数据存储到数据库中,我想通知客户端数据库已更改。有没有办法将restapi与websocket结合起来?我发现的示例是使用 websockets 来接收数据并发送到客户端,而我正在使用 post 方法接收并希望使用 websocket 进行警报。任何帮助,将不胜感激。服务器.pyimport sqlite3from flask import Flask, render_templatefrom flask_socketio import SocketIOapp = Flask(__name__)app.config['SECRET_KEY'] = 'secret!'socketio = SocketIO(app)@app.route('/', methods=['GET'])def index(): render_template('index.html')# listen for data@app.route('/listen/<data>',methods=['POST'])def listen(data): # insert to db conn = sqlite3.connect('storage.db') c = conn.cursor() c.execute('''CREATE TABLE info(num text)''') c.execute('''INSERT INTO info(num) VALUES(?)''',(data)) conn.commit() conn.close() #send alert to client@socketio.on('message')def handle_message(message): send(message)if __name__ == '__main__': socketio.run(app)索引.html<head><script type="text/javascript"src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script><script type="text/javascript" charset="utf-8"> var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on('message', function(data) { console.log(data); }); </script></head>
2 回答

holdtom
TA贡献1805条经验 获得超10个赞
正如@Dinko 所提到的,您已经拥有一切,您只需要在 conn.close() 之后在您的监听函数中再添加一个,即:
socketio.emit('message', {'data': 'Records Affected'}, broadcast=True)
您的回调函数将被触发,因为它会听到“消息”套接字。
这里要添加的另一件事是,如果您有特定频道的命名空间,那么您也需要传递它
socketio.emit('message', {'data': 'Records Affected'}, broadcast=True, namespace='/test')
希望这可以帮助..!
添加回答
举报
0/150
提交
取消