Flask-SocketIO服务器未按预期处理事件

时间:2020-03-08 17:37:43

标签: python heroku flask-socketio eventlet python-socketio

我正在使用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消息之前需要进行的无数次尝试。如果需要其他详细信息,我将相应地发布。

0 个答案:

没有答案
相关问题