为了账号安全,请及时绑定邮箱和手机立即绑定

在flask中发布请求后如何使用websockets向客户端发送警报

在flask中发布请求后如何使用websockets向客户端发送警报

梦里花落0921 2021-08-14 17:13:10
发出发布请求后如何向客户端发送消息?我将 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')

希望这可以帮助..!


查看完整回答
反对 回复 2021-08-14
  • 2 回答
  • 0 关注
  • 257 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号