Javascript 更新socket.io后getaddrinfo ENOTFOUND

Javascript 更新socket.io后getaddrinfo ENOTFOUND,javascript,node.js,sockets,dns,request,Javascript,Node.js,Sockets,Dns,Request,我有一个服务,客户端订阅套接字连接并监听管道中的更新。一旦一个客户端订阅了一个文件室,我们就发送一个sendSyncRequest(下面的视图),它调用另一个服务来获取任何更新的数据,并通过socket文件室将其发布回客户端 当socket.io版本从v1.7.3更新到v2.1.1时,问题不断出现。在将服务部署到生产服务器之后,一切都变得有点混乱,我们开始看到一个getaddrinfo ENOTFOUND错误,每次遇到sendSyncRequest时都会弹出 一些补充资料: 操作系统版本:Ub

我有一个服务,客户端订阅套接字连接并监听管道中的更新。一旦一个客户端订阅了一个文件室,我们就发送一个sendSyncRequest(下面的视图),它调用另一个服务来获取任何更新的数据,并通过socket文件室将其发布回客户端

当socket.io版本从v1.7.3更新到v2.1.1时,问题不断出现。在将服务部署到生产服务器之后,一切都变得有点混乱,我们开始看到一个
getaddrinfo ENOTFOUND
错误,每次遇到sendSyncRequest时都会弹出

一些补充资料:

  • 操作系统版本:Ubuntu 14.04.3 LTS(GNU/Linux 3.13.0-74-generic x86_64)
  • 节点版本:4.4.0
  • Socket.io版本:2.2.1
  • 请求版本:2.81.0
错误屏幕截图:

sendSyncRequest代码:

function sendSyncRequest(service, accessToken, lastUpdate, socketId, method) {
  var uri = service.scheme + '://' + service.host + ':' + service.port + service.path;

  var options = {
    uri:       uri,
    strictSSL: false,
    timeout:   NO_RESPONSE_TIMEOUT,
    json:      true,
    headers: {
      Authorization: 'Bearer ' + accessToken
    }
 };

 if (method === 'get') {
   options.qs = {
     lastUpdate: lastUpdate,
     socketId: socketId
   };
 } else {
   options.body = {
   lastUpdate: lastUpdate,
   socketId: socketId
 };
}

  request[method || 'post'](options, function(err, response) {
    if (err) {
      log.error('sendSyncRequest', err);
      return;
    }

    if (response.statusCode !== 200) {
      log.error('sendSyncRequest %d %s', response.statusCode, http.STATUS_CODES[response.statusCode]);
      return;
    }
  }
);}
套接字服务器代码:

module.exports.init = function (callback) {
log.info('starting new Socket.IO server');
io.origins('*:*');

log.info('initializing socket.io server');

io.attach(server.getServer());

io.on('disconnect', function (socket) {
    log.info('socket.io server disconnect ', socket);
});

io.on('connection', function (socket) {
    log.info('new socket.io client %s@%s (%s) connection',
        socket);

    socket.emit('successful_connection', {socketId: socket.id});

    socket.on('disconnecting', function () {
        log.info('socket.io client %s@%s (%s) disconnecting',
            socket.userData.user,
            socket.userData.domain,
            socket.id);

        for (var room in socket.rooms) {
            if (socket.rooms.hasOwnProperty(room)) {
                var count = io.sockets.adapter.rooms[room].length;
                log.debug('current room %s connected client count = %d', room, count);

                if (count <= 1) {
                    log.info('unsubscribing from room %s', room);
                    cacheClient.unsubscribe(room);
                }
            }
        }
    });
});
};
module.exports.init=函数(回调){
log.info('starting new Socket.IO server');
io.来源(“*:*”);
log.info('初始化socket.io服务器');
io.attach(server.getServer());
io.on(断开)功能(插座){
log.info('socket.io服务器断开连接',socket);
});
io.on('连接',函数(套接字){
log.info('新socket.io客户端%s@%s(%s)连接',
插座);
emit('successful_connection',{socketId:socket.id});
socket.on('disconnecting',function(){
log.info('socket.io客户端%s@%s(%s)正在断开连接',
socket.userData.user,
socket.userData.domain,
插座(id);
用于(插座室中的var室){
if(插座、房间、hasOwnProperty(房间)){
var count=io.sockets.adapter.rooms[room].length;
log.debug('current room%s connected client count=%d',room,count);
如果(计算)