いくつかのコードを機能させようとしていますが、正しく動作しないようです。意図は、ボタンが押されたときにすべてのクライアントが確認できるようにすることです。
現時点では、ボタンを押してメッセージを表示するクライアントを取得できますが、それ以外は表示されません。
パイ:
pushedDict = {}
@app.route('/buttons/')
def index():
return flask.render_template('index.html', port=port)
def wsgi_app(environ, start_response):
path = environ["PATH_INFO"]
if path == "/buttons/":
return app(environ, start_response)
elif path == "/websocket/":
handle_websocket(environ["wsgi.websocket"])
else:
return app(environ, start_response)
def handle_websocket(ws):
while True:
pushRecieve = ws.receive() # Receive pushed Buttons
gap = "Button" # Placeholder for later
pushedDict.update({gap:pushRecieve}) # Add to Dictionary
pushSend = json.loads(pushedDict[gap]) # Get from Dictionary
ws.send(json.dumps({'output': pushSend['output']})) # Send
pushedDict.update({gap:""}) # Clear Dictionary
JS 受信:
$(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}));
});
});
新鮮な視点に感謝します。