Я использую 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
сообщения. Если понадобятся какие-либо дополнительные детали, я выложу их соответственно.