我想将多处理添加到我的flask socketio服务器,因此我尝试根据flask socketio文档添加redis消息队列。即使不添加多处理,客户端也不会接收任何事件。其他一切都正常工作(例如,web页面正在被服务,http请求正在发出,数据库调用正在发出)。前端或后端没有错误消息。在我添加redis队列之前,它正在工作。我验证了正在命中'addname'socketio路由,并且request.sid看起来正确。我做错什么了?
非常简化的服务器代码:
external_sio = SocketIO(message_queue='redis://')
def requester(user, sid):
global external_sio
external_sio.emit('addname', {'data': 'hello'}, room=sid)
# do some stuff with requests and databases
external_sio.emit('addname', {'data': 'goodbye'}, room=sid)
def main():
app = Flask(__name__,
static_url_path='',
static_folder='dist',
template_folder='dist')
socketio = SocketIO(app)
@socketio.on('addname')
def add_name(user):
global external_sio
external_sio.emit('addname', {'data': 'test'}, room=request.sid)
requester(user.data, request.sid)
socketio.run(app, host='0.0.0.0', port=8000)
if __name__ == '__main__':
main()
简化的客户端代码(javascript):
const socket = SocketIOClient('ipaddress:8000')
socket.emit('addname', {data: 'somename'})
socket.on('addname', ({data}) => console.log(data))
1条答案
按热度按时间y4ekin9u1#
主服务器还需要连接到消息队列。在主服务器中执行以下操作:
在外部过程中,请执行以下操作: