Почему Flask-SocketIO заканчивается сообщением «Ошибка недопустимого сеанса»?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему Flask-SocketIO заканчивается сообщением «Ошибка недопустимого сеанса»?

Сообщение Anonymous »

Я тестирую пакет Flask-SocketIO. Моя конфигурация:
  • Сервер: Synology NAS DS218J (unix) в локальной сети, базовый пример выполняется на Python 3.9.14.
  • Скрипт Python, работающий на сервере:

    Код: Выделить всё

    from flask import Flask, render_template
    from flask_socketio import SocketIO, emit
    
    app = Flask(__name__)
    app.config['SECRET_KEY'] = 'secret!'
    socketio = SocketIO(app, async_mode=None, cors_allowed_origins="*",
    ping_interval=60, ping_timeout=60,
    logger=True, engineio_logger=True)
    
    @app.route('/')
    def index():
    return render_template('index.html')
    
    @socketio.event
    def my_event(message):
    emit('my_response', {'data': message + ': got it!'})
    
    @socketio.event
    def my_ping():
    emit('my_pong')
    
    if __name__ == '__main__':
    socketio.run(app, port=8080)
    
  • index.html отправить в браузер клиента:

    Код: Выделить всё

    
    
    
    Flask-SocketIO Test
    
    
    
    $(document).ready(function () {
    // Connect to the Socket.IO server.
    // The connection URL has the following format, relative to the current page:
    //     http[s]://:
    [/]
    // var socket = io();
    var socket = io('http://192.168.0.20:8080');
    
    // Event handler for new connections.
    // The callback function is invoked when a connection with the
    // server is established.
    socket.on('connect', function () {
    socket.emit('my_event', { data: 'I\'m connected!' });
    });
    
    // Event handler for server sent data.
    // The callback function is invoked whenever the server emits data
    // to the client. The data is then displayed in the "Received"
    // section of the page.
    socket.on('my_response', function (msg, cb) {
    $('#log').append('
    ' + $('').text('Received #' + msg.count + ': ' + msg.data).html());
    if (cb)
    cb();
    });
    
    // Interval function that tests message latency by sending a "ping"
    // message. The server then responds with a "pong" message and the
    // round trip time is measured.
    var ping_pong_times = [];
    var start_time;
    window.setInterval(function () {
    start_time = (new Date).getTime();
    $('#transport').text(socket.io.engine.transport.name);
    socket.emit('my_ping');
    }, 1000);
    
    // Handler for the "pong" message.  When the pong is received, the
    // time from the ping is stored, and the average of the last 30
    // samples is average and displayed.
    socket.on('my_pong', function () {
    var latency = (new Date).getTime() - start_time;
    ping_pong_times.push(latency);
    ping_pong_times = ping_pong_times.slice(-30); // keep last 30 samples
    var sum = 0;
    for (var i = 0; i < ping_pong_times.length; i++)
    sum += ping_pong_times[i];
    $('#ping-pong').text(Math.round(10 * sum / ping_pong_times.length) / 10);
    });
    
    // Handlers for the different forms in the page.
    // These accept data from the user and send it to the server in a
    // variety of ways
    $('form#emit').submit(function (event) {
    socket.emit('my_event', { data: $('#emit_data').val() });
    return false;
    });
    $('form#broadcast').submit(function (event) {
    socket.emit('my_broadcast_event', { data: $('#broadcast_data').val() });
    return false;
    });
    $('form#join').submit(function (event) {
    socket.emit('join', { room: $('#join_room').val() });
    return false;
    });
    $('form#leave').submit(function (event) {
    socket.emit('leave', { room: $('#leave_room').val() });
    return false;
    });
    $('form#send_room').submit(function (event) {
    socket.emit('my_room_event', { room: $('#room_name').val(), data: $('#room_data').val() });
    return false;
    });
    $('form#close').submit(function (event) {
    socket.emit('close_room', { room: $('#close_room').val() });
    return false;
    });
    $('form#disconnect').submit(function (event) {
    socket.emit('disconnect_request');
    return false;
    });
    });
    
    
    
    
    Flask-SocketIO Test
    
    Async mode is: {{ async_mode }}[/b][b]
    Current transport is: [/b][b]
    Average ping/pong latency: ms[/b]
    
    Send:
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    Receive:
    
    
    
    
    
  • Клиент: веб-браузер Google Chrome с одного ПК с ОС Windows в той же локальной сети.
Когда я подключаюсь к серверу, возвращается index.html, как и ожидалось (поэтому серверный скрипт делает все правильно), но никаких дальнейших ответов от сервера не происходит. получены, даже если я использую кнопки интерфейса веб-страницы.
Журнал ошибок Python постоянно показывает эти ошибки:

Код: Выделить всё

2024-11-13T11:09:48+01:00 DS218J python3.9-uwsgi[9810]: d4PXlWixzGEEkGSDAAAA: Sending packet OPEN data {'sid': 'd4PXlWixzGEEkGSDAAAA', 'upgrades': ['websocket'], 'pingTimeout': 60000, 'pingInterval': 60000}
2024-11-13T11:09:48+01:00 DS218J python3.9-uwsgi[9810]: [pid: 9999|app: 0|req: 2/2] 192.168.0.163 () {42 vars in 744 bytes} [Wed Nov 13 11:09:48 2024] GET /socket.io/?EIO=4&transport=polling&t=PCb01mX => generated 97 bytes in 4 msecs (HTTP/1.1 200) 3 headers in 149 bytes (2 switches on core 1)
2024-11-13T11:09:48+01:00 DS218J python3.9-uwsgi[9810]: Invalid session d4PXlWixzGEEkGSDAAAA (further occurrences of this error will be logged with level INFO)
2024-11-13T11:09:48+01:00 DS218J python3.9-uwsgi[9810]: Invalid session d4PXlWixzGEEkGSDAAAA (further occurrences of this error will be logged with level INFO)
2024-11-13T11:09:48+01:00 DS218J python3.9-uwsgi[9810]: [pid: 10000|app: 0|req: 1/3] 192.168.0.163 () {46 vars in 889 bytes} [Wed Nov 13 11:09:48 2024] POST /socket.io/?EIO=4&transport=polling&t=PCb01mj&sid=d4PXlWixzGEEkGSDAAAA => generated 17 bytes in 7 msecs (HTTP/1.1 400) 3 headers in 143 bytes (1 switches on core 0)
2024-11-13T11:09:48+01:00 DS218J python3.9-uwsgi[9810]: Invalid session d4PXlWixzGEEkGSDAAAA
2024-11-13T11:09:48+01:00 DS218J python3.9-uwsgi[9810]: [pid: 10004|app: 0|req: 2/4] 192.168.0.163 () {42 vars in 794 bytes} [Wed Nov 13 11:09:48 2024] GET /socket.io/?EIO=4&transport=polling&t=PCb01mk&sid=d4PXlWixzGEEkGSDAAAA => generated 17 bytes in 1 msecs (HTTP/1.1 400) 3 headers in 143 bytes (1 switches on core 1)
Я читал другие сообщения, связанные с той же проблемой, но ни одно из них не решило проблему.
Я также пытался выполнить сценарий на одном ПК с Windows (127.0.0.1) ), и все работало нормально, как и ожидалось.
Проблема в том, что мне нужно, чтобы на сервере выполнялся скрипт Python...
Пожалуйста, может кто-нибудь помочь с этим?
Спасибо за заранее.

Подробнее здесь: https://stackoverflow.com/questions/791 ... sion-error
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»