Python 使用Flask在客户端之间传递变量
我试图让一些代码工作,但似乎不能得到它的权利,其目的是所有的客户端可以看到当一个按钮被按下 目前,我可以让按下按钮的客户机看到消息,但没有其他消息 Py: JS接收:Python 使用Flask在客户端之间传递变量,python,flask,Python,Flask,我试图让一些代码工作,但似乎不能得到它的权利,其目的是所有的客户端可以看到当一个按钮被按下 目前,我可以让按下按钮的客户机看到消息,但没有其他消息 Py: JS接收: $(document).ready(function(){ $(function() { if ("WebSocket" in window) { ws = new WebSocket("ws:
$(document).ready(function(){
$(function() {
if ("WebSocket" in window) {
ws = new WebSocket("ws://" + document.domain + ":{{port}}/websocket/");
ws.onmessage = function (msg) {
var getButtons = JSON.parse(msg.data);
$("p#log").html(getButtons.output );
};
};
});
JS发送:
var buttonQueue = [];
$("a.button1").mousedown(function(e){
e.preventDefault();
buttonQueue.push("button1")
ws.send(JSON.stringify({'output': buttonQueue}));
});
$("a.button1").mouseup(function(e){
e.preventDefault();
remove(buttonQueue, "button1");
ws.send(JSON.stringify({'output': buttonQueue}));
});
$("a.button2").mousedown(function(e){
e.preventDefault();
buttonQueue.push("button2")
ws.send(JSON.stringify({'output': buttonQueue}));
});
$("a.button2").mouseup(function(e){
e.preventDefault();
remove(buttonQueue, "button2");
ws.send(JSON.stringify({'output': buttonQueue}));
});
});
欣赏全新的观点。我不是WebSocket方面的专家,但我的印象是ws协议只在客户端和服务器之间建立了持续的连接,允许从服务器发送数据,而无需客户端不断请求。你的Flask应用程序不知道任何其他连接的客户端;它一次只使用
handle\u websocket(ws)
与一个客户机通话。您必须告诉您的Flask应用程序当前连接了哪些客户端,然后ws.send()按钮将更新消息发送给所有客户端。我没有这方面的经验,但跟踪ws-connected客户端并向其发送更新的最流行方式似乎是。我还发现了一个例子,你可以适应你的需要。希望这有帮助
var buttonQueue = [];
$("a.button1").mousedown(function(e){
e.preventDefault();
buttonQueue.push("button1")
ws.send(JSON.stringify({'output': buttonQueue}));
});
$("a.button1").mouseup(function(e){
e.preventDefault();
remove(buttonQueue, "button1");
ws.send(JSON.stringify({'output': buttonQueue}));
});
$("a.button2").mousedown(function(e){
e.preventDefault();
buttonQueue.push("button2")
ws.send(JSON.stringify({'output': buttonQueue}));
});
$("a.button2").mouseup(function(e){
e.preventDefault();
remove(buttonQueue, "button2");
ws.send(JSON.stringify({'output': buttonQueue}));
});
});