我正在使用Heroku与事件let worker一起托管Flask-SocketIO服务器。我已经设置了一个简单的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
消息之前需要进行的无数次尝试。如果需要其他详细信息,我将相应地发布。