猿问

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

发出发布请求后如何向客户端发送消息?我将 post 请求中的数据存储到数据库中,我想通知客户端数据库已更改。有没有办法将restapi与websocket结合起来?我发现的示例是使用 websockets 来接收数据并发送到客户端,而我正在使用 post 方法接收并希望使用 websocket 进行警报。任何帮助,将不胜感激。


服务器.py


import sqlite3

from flask import Flask, render_template

from flask_socketio import SocketIO


app = 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>


梦里花落0921
浏览 258回答 2
2回答

holdtom

正如@Dinko 所提到的,您已经拥有一切,您只需要在 conn.close() 之后在您的监听函数中再添加一个,即:socketio.emit('message',&nbsp;{'data':&nbsp;'Records&nbsp;Affected'},&nbsp;broadcast=True)您的回调函数将被触发,因为它会听到“消息”套接字。这里要添加的另一件事是,如果您有特定频道的命名空间,那么您也需要传递它socketio.emit('message',&nbsp;{'data':&nbsp;'Records&nbsp;Affected'},&nbsp;broadcast=True,&nbsp;namespace='/test')希望这可以帮助..!
随时随地看视频慕课网APP

相关分类

Python
我要回答