Flask -SocketIO сервер не обрабатывает события, как ожидалось - PullRequest
0 голосов
/ 08 марта 2020

Я использую Heroku для размещения сервера Flask -SocketIO с работником eventlet. Я установил простой сервер Flask -SocketIO, чтобы он работал, однако у меня были проблемы с тем, чтобы он работал последовательно . Чтобы проверить сервер, я посылаю ping от клиента к серверу, и сервер должен излучать pong.

код на стороне сервера

from flask import Flask
from flask_socketio import SocketIO, emit

app = Flask(__name__)
socketio = SocketIO(app)

@app.route('/')
def index():
    return "<h1>Index page</h1>"

@socketio.on('ping')
def message():
    emit('pong')

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

Код на стороне клиента

import socketio

host = "http://{HOSTNAME}:80"
sio = socketio.Client()

@sio.event
def connect():
    print("Connected")
    sio.emit('ping')

@sio.event
def disconnect():
    print("Disconnected")

@sio.event
def pong(data):
    print("ponged")

sio.connect(host)
sio.wait()

При тестировании наиболее распространенным результатом при запуске клиента является

Connected
>>>

Я также получаю

Connected
Disconnected
Connected
>>> 

и, в конечном итоге, ожидаемый результат

Connected
ponged
Disconnected
Connected
>>> 

Тот факт, что клиент не говорит Disconnected до завершения программы, указывает на то, что я что-то не так делаю, не говоря уже о бесчисленных попытки нужны до получения ponged сообщения. Если понадобятся какие-либо дополнительные детали, я выложу их соответственно.

...