socket.io未在第一次请求时初始化

socket.io未在第一次请求时初始化,socket.io,gunicorn,flask-socketio,Socket.io,Gunicorn,Flask Socketio,我在gunicorn和nginx上使用socket.io和flask socketio。 我能够成功地发出消息,一切正常。 唯一的问题是在我重新启动gunicorn之后,套接字在我第一次加载页面时没有初始化(重新启动后第一次请求服务器)。从第二个请求开始,一切都按预期进行 这就是我初始化套接字的方式 var socket= io(); socket.on('connected', function(msg) { user_id = msg['user_id']; console.

我在gunicorn和nginx上使用socket.io和flask socketio。 我能够成功地发出消息,一切正常。 唯一的问题是在我重新启动gunicorn之后,套接字在我第一次加载页面时没有初始化(重新启动后第一次请求服务器)。从第二个请求开始,一切都按预期进行

这就是我初始化套接字的方式

var socket= io();
socket.on('connected', function(msg) {
    user_id = msg['user_id'];
    console.log('Connected', user_id);
});
在服务器端

socketio = SocketIO(app,message_queue="amqp://test:test@localhost", cors_allowed_origins="*")

@socketio.on('connect')
def test_connect():
    print("socket.io")
    user_id = request.sid
    emit('connected',  {'user_id': user_id}, room=user_id)
gunicorn的运营方式是

gunicorn -k gevent -w 1 wsgi:app --bind unix:app.sock -m 007 --timeout 100

“未初始化”是指您的
连接的
处理程序未运行吗?您是否已启用服务器和客户端的日志记录,以查看是否存在任何线索?连接的处理程序未运行,并且我在日志中未看到任何线索。但是我可以在访问日志中看到socket.io的初始请求。从下一个请求开始(例如,如果我重新加载页面),同样的代码工作正常。创建一个小而完整的示例,我将在这里调试它。除此之外,我不知道怎样才能帮你解决这个问题。我想我已经解决了问题的起因。我在后台运行芹菜任务,使用
emit
从进程内部发送消息。使用
SocketIO(消息队列=”amqp://test:test@localhost“
不起作用,因为没有发送消息(使用
emit
),而是使用
SocketIO(应用程序,消息队列=”amqp://test:test@localhost“
确实有效。我描述的问题只有在使用
SocketIO(message\u queue=”时才会发生amqp://test:test@localhost”)
。是指向带有示例代码的存储库的链接。