我尝试使用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
答案 0 :(得分:4)
有。但是,不在您当前的设置中。 Flask使用的HTTP标准仅在调用时返回数据。所以只有当你打电话给&#39; /&#39;在烧瓶应用程序中它将返回数据。简单的解决方案是每5秒调用一次,看看是否有变化。这可以使用JavaScript setInterval函数实现。
您拥有的另一个选项是开始使用带有socketio库的websockets。您可以通过flask-socketio扩展将Flask与此库连接。
查找以下信息:
https://flask-socketio.readthedocs.io/en/latest/
显然,这些并不是唯一的解决方案。有更多方法可以获得您想要的东西。但是,解释这一点会更复杂,我认为通过这两个选项,您已经可以实现一些功能了。