【问题标题】:Real-time with Flask and JS使用 Flask 和 JS 实时
【发布时间】:2017-12-08 10:05:09
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: python-3.x flask


    【解决方案1】:

    有。但是,不在您当前的设置中。 Flask 使用的 HTTP 标准仅在调用时返回数据。因此,只有当您在烧瓶应用程序中调用“/”路由时,它才会返回数据。简单的解决方案是每 5 秒调用一次以查看是否有变化。这可以通过 JavaScript setInterval 函数来实现。

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

    在下面查找信息:

    https://socket.io/

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-10
      • 1970-01-01
      相关资源
      最近更新 更多