Как отправить уведомления на тестовый клиент во Flask-SocketIO?

Я пытаюсь получать сообщения от сервера в качестве клиента; используя мой тестовый клиент следующим образом:

Клиент:

socket_client = socketio.test_client(app)
@socketio.on('hit_client')
def recieve_message(json_data):
    print("Server has called!")

Сервер:

socketio.emit('hit_client', 'Hi Client!')

Сервер должен нажать и вызвать hit_client канал, но это не увольняют. Тем не менее socket_client.get_received() имеет испущенные данные. Я думал, что весь смысл WebSockets был двунаправленной связью (то есть нажатием триггеров функций)!

Это очень простая настройка, и она даже не работает... Любая помощь будет чрезвычайно цениться. Я била головой по часам.

1 ответ

Решение

Тестовый клиент не является клиентом Socket.IO. Его единственная цель - помочь вам написать модульные тесты для вашего сервера Socket.IO. По концепции он похож на тестовый клиент Flask для HTTP-маршрутов. Имеет смысл использовать его только в модульных тестах.

Когда сервер передает что-то клиенту, тестовый клиент просто сохраняет это и делает его доступным в вашем тестовом коде через get_received вызов. Он не будет запускать какие-либо события, так как это не его предназначение.

Если вы хотите реализовать клиент Socket.IO в python, для этого есть пакет: https://pypi.python.org/pypi/socketIO-client. С помощью этого пакета вы можете написать скрипт Python, который подключается к серверу Socket.IO и может отправлять и получать события.

Другие вопросы по тегам