Это похоже на очень простую проблему, но, тем не менее, я запутался, у меня есть приложение Flask, которое обслуживает веб-страницу и общается с этой страницей через Socket.io. Применение Настой выглядит следующим образом:Flask and Flask-SocketIO
app = Flask(__name__)
socketio = SocketIO(app)
@socketio.on_error()
def error_handler(e):
print e
#this fires
@socketio.on("connect")
def connect():
print "connected"
#this does not
@socketio.on('test')
def test_handler(message):
print "TEST WORKS"
if __name__ == "__main__":
app.run(debug=True, host='0.0.0.0')
socketio.run(app)
Моя сама страница очень проста:
<!doctype html>
<html>
<head>
<title>Flask Socket.IO test</title>
<style>
body { font: 13px Helvetica, Arial; }
</style>
<script src="socket.io-1.4.3.js"></script>
<script src="jquery-2.2.0.min.js"></script>
<script>
var socket = io("192.168.42.1:5000");
socket.on('connect', function() {
console.log(" connected ");
});
$(document).ready(function() {
$('.startBtn').click(function() {
console.log("ok");
socket.emit('test', {data:"start!"});
});
});
</script>
</head>
<body>
<div class="startBtn">
<h1>START</h1>
</div>
</body>
</html>
Я вижу, с обеих сторон, что они соединяют (т.е. событие соединения запускается с обеих сторон), но ничего, что Я отправляю со страницы на сервер. Я предполагаю, что у меня что-то неправильно настроено, но установление связи заставляет меня думать иначе.
«test» не является допустимым сообщением ... интерфейс socketio имеет только «соединение», «разъединение» и «сообщение» ... Я думаю ... в любом случае вам нужен обработчик on_message, который вы разбираете дополнительную информацию о том, что делать ... –
@JoranBeasley Интересно, документация Flask-SocketIO показывает: '@ socketio.on ('my event') def handle_my_custom_event (json):' и соответствующее сообщение, отправленное со страницы HTML: ' socket.emit ('my event', {data: 'I' 'm connected!'}); 'поэтому я предполагаю, что я предполагаю, что вещи, не названные 'message', должны работать? –
Я бы воспользовался кнопкой '' button id = "startBtn"> Щелкните по мне! ', а затем' $ ('# startBtn'). Click (function() {...} '. Я не уверен, что нахождение кликов на этом тексте« START »вообще не работает. –