Flask和JS实时

时间:2017-12-08 10:05:10

标签: python-3.x flask

我尝试使用Flask和JavaScript创建聊天应用,但我遇到了问题。我使用jQuery接受用户名和消息,并使用Flask将消息放在页面上。无论如何我可以实时做到这一点,而无需重新加载页面吗?

(收集数据并转换为JSON)

$(function () {
    $('#send').bind('click', function () {
        $.getJSON('/send', {
            user: $('#username').val(),
            mess: $('#message').val()
        }, function (data) {
            console.log('message sent')
            //$("#result").append(data.result + '<br>');
        });
        return false;
    });
});

(app.py)

messages = []
@app.route('/')
def index():
    return render_template('index.html', messages=messages)

@app.route('/send',)
def send():
    try:
        username = request.args.get('user')
        message = request.args.get('mess')
        messages.append([username, message])
        return jsonify(result=username + ': ' + message + '; ')
    except Exception as e:
        return e

1 个答案:

答案 0 :(得分:4)

有。但是,不在您当前的设置中。 Flask使用的HTTP标准仅在调用时返回数据。所以只有当你打电话给&#39; /&#39;在烧瓶应用程序中它将返回数据。简单的解决方案是每5秒调用一次,看看是否有变化。这可以使用JavaScript setInterval函数实现。

您拥有的另一个选项是开始使用带有socketio库的websockets。您可以通过flask-socketio扩展将Flask与此库连接。

查找以下信息:

https://socket.io/

https://flask-socketio.readthedocs.io/en/latest/

显然,这些并不是唯一的解决方案。有更多方法可以获得您想要的东西。但是,解释这一点会更复杂,我认为通过这两个选项,您已经可以实现一些功能了。