Node.js AMQP连接与节点js在一定时间间隔内关闭

Node.js AMQP连接与节点js在一定时间间隔内关闭,node.js,rabbitmq,amqp,Node.js,Rabbitmq,Amqp,我在过去3天试用了以下版本。请帮我解决这个问题 >Error: Unexpected close at succeed (/usr/local/lib/node_modules/amqplib/lib/connection.js:259:13) at onOpenOk (/usr/local/lib/node_modules/amqplib/lib/connection.js:241:5) at /usr/local/lib/node_modules/amqplib/lib/connect

我在过去3天试用了以下版本。请帮我解决这个问题

>Error: Unexpected close
at succeed (/usr/local/lib/node_modules/amqplib/lib/connection.js:259:13)
at onOpenOk (/usr/local/lib/node_modules/amqplib/lib/connection.js:241:5)
at /usr/local/lib/node_modules/amqplib/lib/connection.js:160:32
at /usr/local/lib/node_modules/amqplib/lib/connection.js:154:12
at Socket.recv (/usr/local/lib/node_modules/amqplib/lib/connection.js:480:12)
at Socket.g (events.js:180:16)
at Socket.EventEmitter.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:407:10)
at emitReadable (_stream_readable.js:403:5)
at readableAddChunk (_stream_readable.js:165:9)
我使用的是amqplib+节点js。无论何时启动服务器,我都会在一定的时间间隔内出现上述错误。最大时间间隔为5分钟

amqplib = amqplib.connect('amqp://'+rabit_host).then(function(conn)
{
    amqpconnection = conn;
});

io.sockets.on('connection', function(client)
{   
    client.on('receivemsg', function(arg)
    {
        amqpconnection.createConfirmChannel().then(function(channelObjSuccess)
        {
            channelObjSuccess.assertQueue(queue_name,{durable:false,autoDelete:true});
            client.assignObj = channelObjSuccess;
            channelObjSuccess.consume(queue_name, function(msg)
            {
                var encodemsg = msg.content.toString();
                var json_msg = JSON.parse(encodemsg);                           
                client.emit('chatrecive',json_msg);
            }).then(function(){
                console.log("Receive Consiuume Close");
            }); 
        });
    });

client.on('loginentry', function(arg)
{
    amqpconnection.createConfirmChannel().then(function(channelObjSuccess) {
        channelObjSuccess.assertQueue(queue_name,{durable:false,autoDelete:true});
    });         
});

client.on('sendmsg', function(arg)
{   
    var payload_stringify = JSON.stringify(arg);            
    amqpconnection.createConfirmChannel().then(function(channelObjSuccess) {
    channelObjSuccess.assertQueue(queue_name,{durable:false,autoDelete:true});
    channelObjSuccess.sendToQueue(queue_name, new Buffer(payload_stringify), {},
        function(err, ok) 
        {
            if (err !== null)
                console.log('Message Send Failure! ');
            else
            {
                channelObjSuccess.close();
            }
        });
    });
}); 

client.on('disconnect', function()
{   
    try {
    console.log("AMPQ Connection Closed - Disconnect");
    if(typeof(client.assignObj)!=undefined)
    {
        client.assignObj.close();
    }   
    }
    catch (alreadyClosed) {
        console.log("RabbitMQ Connection Already Closed " + alreadyClosed.stackAtStateChange);
    }
    });         
});

server.listen(port);

我想我找到了答案,可能是连接到AMQP时心跳作为选项的问题。 例如:


url=”amqp://turtle.rmq.cloudamqp.com/bqftjxzn?heartbeat=45";

错误来自您的套接字,请发布相关代码<代码>self.stream.on('end',self.onSocketError.bind(self,new Error('Unexpected close'))感谢您的快速响应。什么时候打电话?你想要代码的哪一部分?这说明错误是套接字错误,所以给我们看一些套接字代码我已经在上面添加了代码。请检查一下。哎哟,请缩进您的代码,我来看看。localhost中也会发生同样的情况。您如何解决它?