#javascript #sockets #flask #socket.io
#javascript #сокеты #flask #socket.io
Вопрос:
Я работаю над сокетом.модуль ввода-вывода в flask, и я не получаю ответ в сокете после нажатия кнопок yes, no или maybe
Вот мой код
html-код
> <!DOCTYPE html>
> <html>
> <head>
> <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/1.3.6/socket.io.min.js"></script>
> <script type="text/javascript" src="{{ url_for('static', filename='index.js') }}"></script>
> <title>Vote</title>
> </head>
> <body>
> <ul id="votes">
> </ul>
> <hr>
> <button data-vote="yes">Yes</button>
> <button data-vote="no">No</button>
> <button data-vote="maybe">Maybe</button>
> </body>
> </html>
Это мой js-код
document.addEventListener('DOMContentLoaded', () => {
// Connect to websocket
var socket = io.connect(location.protocol '//' document.domain ':' location.port);
// When connected, configure buttons
socket.on('connect', () => {
// Each button should emit a "submit vote" event
document.querySelectorAll('button').forEach(button => {
button.onclick = () => {
const selection = button.dataset.vote;
socket.emit('submit vote', {'selection': selection});
};
});
});
// When a new vote is announced, add to the unordered list
socket.on('announce vote', data => {
const li = document.createElement('li');
li.innerHTML = `Vote recorded: ${data.selection}`;
document.querySelector('#votes').append(li);
});
});
Это мой код на python
import os
import requests
from flask import Flask, jsonify, render_template, request
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config["SECRET_KEY"] = os.getenv("SECRET_KEY")
socketio = SocketIO(app)
@app.route("/")
def index():
return render_template("index.html")
@socketio.on("submit vote")
def vote(data):
selection = data["selection"]
emit("announce vote", {"selection": selection}, broadcast=True)
127.0.0.1 — — [06 / Mar / 2019 23:48:55] «GET / HTTP/1.1» 200 —
127.0.0.1 — — [06 / Mar / 2019 23:48:55] «ПОЛУЧИТЬ /static/index.js HTTP / 1.1″200 —
127.0.0.1 — — [06 / Mar / 2019 23:48:56] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896336110-0 HTTP / 1.1″200 —
127.0.0.1 — — [06 / Mar / 2019 23:49:56] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896336245-1amp;sid=7d3a45fe719e4e92a2b60728ff734cdf
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:49:56] «GET /favicon.ico HTTP/1.1» 404 —
127.0.0.1 — — [06 / Mar / 2019 23:49:56] «СООБЩЕНИЕ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896337783-2amp;sid=7d3a45fe719e4e92a2b60728ff734cdf
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:49:56] «СООБЩЕНИЕ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896396273-3amp;sid=7d3a45fe719e4e92a2b60728ff734cdf
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:49:57] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896397551-4 HTTP / 1.1″200 —
127.0.0.1 — — [06 / Mar / 2019 23:50:56] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896397576-5amp;sid=42e86974ded740ed8ee99266e917048e
HTTP / 1.1″200 —
127.0.0.1 — — [06 / Mar / 2019 23:50:56] «СООБЩЕНИЕ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896423047-6amp;sid=42e86974ded740ed8ee99266e917048e
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:50:56] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896456270-7amp;sid=42e86974ded740ed8ee99266e917048e
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:50:57] «СООБЩЕНИЕ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896457043-8amp;sid=42e86974ded740ed8ee99266e917048e
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:50:59] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896459040-9 HTTP / 1.1″200 —
127.0.0.1 — — [06 / Mar / 2019 23:51:56] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896459067-10amp;sid=b782019c299b4bc5a913934763b09059
HTTP / 1.1″200 —
127.0.0.1 — — [06 / Mar / 2019 23:51:56] «СООБЩЕНИЕ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896485040-11amp;sid=b782019c299b4bc5a913934763b09059
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:51:56] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896516257-12amp;sid=b782019c299b4bc5a913934763b09059
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:51:57] «СООБЩЕНИЕ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896517043-13amp;sid=b782019c299b4bc5a913934763b09059
HTTP / 1.1» 400 —
127.0.0.1 — — [06 / Mar / 2019 23:51:58] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896518044-14 HTTP / 1.1″200 —
127.0.0.1 — — [06 / Mar / 2019 23:52:56] «ПОЛУЧИТЬ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896518072-15amp;sid=62c3c894db304b538f830b5036e42b6c
HTTP / 1.1″200 —
127.0.0.1 — — [06 / Mar / 2019 23:52:56] «СООБЩЕНИЕ /socket.io/?EIO=3amp;transport=pollingamp;t=1551896544039-16amp;sid=62c3c894db304b538f830b5036e42b6c
HTTP / 1.1» 400 —
Ответ №1:
Не уверен, но можете ли вы, пожалуйста, попробовать
socketio.emit("announce vote", {"selection": selection})