Как мне правильно установить flask-SocketIO?

#sockets #flask #flask-socketio #python-sockets #flask-sockets

#сокеты #flask #flask-socketio #python-сокеты #flask-sockets

Вопрос:

Я несколько раз устанавливал Flask-socketio на свой Mac, внимательно читая инструкции и устанавливая требования (eventlet / gevent). Хотя, когда я запускаю свой простой код для тестирования, он либо говорит, что я не импортировал модули, либо ничего не показывает, пока я не открою index.html в моем браузере, где он затем отображается : The client is using an unsupported version of the Socket.IO or Engine.IO protocols (further occurrences of this error will be logged with level INFO)

Вот мой app.py код:

 from flask import Flask
from flask_socketio import SocketIO, send

app = Flask(__name__)
app.config['SECRET_KEY'] = 'hello'
    
socketio = SocketIO(app, cors_allowed_origins='*')
@socketio.on('message')
def handle(msg):
    print("message: " msg)
    send(msg, bradcast=True)

if __name__ == '__main__':
    socketio.run(app)
 

И вот мое окно терминала:
введите описание изображения здесь

Вот мой index.html код (при необходимости):

 <html>
<head>
<title>Chat Room</title>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.8/socket.io.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$(document).ready(function() {

    var socket = io.connect('http://127.0.0.1:5000');

    socket.on('connect', function() {
        socket.send('User has connected!');
    });

    socket.on('message', function(msg) {
        $("#messages").append('<li>' msg '</li>');
        console.log('Received message');
    });

    $('#sendbutton').on('click', function() {
        socket.send($('#myMessage').val());
        $('#myMessage').val('');
    });

});
</script>
<ul id="messages"></ul>
<input type="text" id="myMessage">
<button id="sendbutton">Send</button>
</body>
</html>
 

Спасибо за вашу помощь

Ответ №1:

Проверьте документы Flask-SocketIO для получения информации о совместимости версий.

Вы установили Flask-SocketIO версии 5, поэтому вам нужна версия 3 клиента JavaScript, но у вас 1.4.8.

Вместо этого используйте этот URL-адрес CDN для версии 3.0.5: https://cdnjs.cloudflare.com/ajax/libs/socket.io/3.0.5/socket.io.min.js

Комментарии:

1. Я посмотрел в интерпретаторе python на pycharm и показал, что FlaskSocketIO имеет версию: 5.0.1 . Как установить js socket client с помощью ссылки?

2. Вы не устанавливаете его — вы уже ссылаетесь на него в <script> теге в своем index.html . Просто обновите тег, чтобы ссылаться на новую версию, изменив номер версии.