javascript - 如何从客户端向服务器发送信息(Flask - python)

标签 javascript jquery python ajax client-server

如何将信息从客户端发送到服务器? 我有点需要单击按钮将一些数据从客户端发送到服务器。 基本上,我有这个页面,其中有几个按钮,我想尝试在按下时向服务器发送有关每个按钮的信息(以及一些有关客户端状态的额外信息,但这并不是必需的)。然后服务器应该处理该信息,并将处理后的版本发送给所有连接的客户端。

客户端不刷新是至关重要的,因为那样我们会丢失 javascript 游戏引擎中的数据,用户将不得不重新开始。

ajax 合适吗?如果是,有人可以包含一个简短的通用示例,其中包含 javascript(客户端)和 Flask(服务器端)函数/代码吗?

最佳答案

开箱即用,您不能将持久请求或 websockets 与 Flask 之类的东西一起使用。但是,您不一定需要这个 - 您可以使用具有简单轮询机制​​的 AJAX。

客户端:

$('button').click(function() {
    var state = $(this).attr('data-state');

    $.post('/clients/', { state: state });
});

// Check for messages every 1 second
var checkDelay = 1000;
var lastMessageSeen = new Date().getTime();

setInterval(function() {
    $.get('/clients/', function(result) {
        if(result.ready and result.timestamp > lastMessageSeen) {
            lastMessageSeen = result.timestamp;
            console.log('Message received: ' + result.msg);
        }
    });
}, checkDelay);

服务器端:

from flask import request, jsonify

@app.route('/clients/', methods=['POST'])
def client_broadcast():
    state = request.form['state']

    # here you can store the message under a key in Memcached, Redis or another in-memory cache server
    store_in_cache(state)

    return jsonify(stored=True)

@app.route('/clients/', methods=['GET'])
def client_retrieve():
    # retrieve messages from cache
    msg, timestamp = retrieve_from_cache()

    if msg:
        return jsonify(ready=True, msg=msg, timestamp=timestamp)
    else:
        return jsonify(ready=False)

我省略了 store_in_cacheretrieve_from_cache 函数,因为这取决于您希望如何处理这些消息。它们对所有浏览器客户端都是全局的吗?你想要一个消息队列吗?

关于javascript - 如何从客户端向服务器发送信息(Flask - python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21806814/

相关文章:

javascript - 删除 css 中未使用的类

javascript - 没有域名可以创建cookie吗?

javascript - 如何使用字段名称创建 JSON 字符串

javascript - 如何向滚动合并表列中的翻译框添加动画

python - 如何检查 numpy 数组的维度?

javascript - Bootstrap 导航栏(左侧菜单)未在顶部正确对齐

php - 在聊天系统中读取双方用户的消息状态

javascript - 我想验证所选日期和时间何时超过当前日期和时间

python - 通过 Satchmo 向优先客户提供折扣?

python - 如何查找 3d numpy 数组每列中连续 1 的组数