Ошибка использования данных сеанса фляги в пространстве имен SocketIO
Я пытаюсь прослушать новые соединения socketIO в пространстве имен идентификатора пользователя. Идентификатор пользователя хранится в объекте сеанса колбы.
@socketio.on('connect', namespace=session['userId'])
def test_connect():
emit('newMessage')
Этот код вызывает следующую ошибку:
raise RuntimeError('working outside of request context')
Как я могу заставить вышеупомянутый слушатель соединения работать в контексте запроса?
Спасибо!
1 ответ
К сожалению, этого сделать нельзя, поскольку пространства имен не являются динамическими, в качестве пространства имен необходимо использовать статическую строку.
Идея пространства имен в SocketIO состоит не в том, чтобы добавлять информацию о соединении, а в том, чтобы позволить клиенту открыть более одного отдельного канала с сервером. Пространства имен позволяют протоколу SocketIO мультиплексировать все эти каналы в одно физическое соединение.
Что вы хотите сделать, это предоставить входной аргумент соединения на сервер. Для этого просто добавьте значение к вашей полезной нагрузке:
@socketio.on('connect', namespace='/chat')
def test_connect():
userid = session['userId']
# ...