node.js

时间:2015-09-07 19:09:13

标签: ios node.js socket.io

我为iOS编写应用程序,它使用Socket.IO。有时我的服务器JS脚本会出现这个错误:

events.js:85
      throw er; // Unhandled 'error' event
            ^
Error: connect ETIMEDOUT
    at exports._errnoException (util.js:746:11)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:983:19)

我所知道的是:

  • 当我只使用Android应用程序时脚本工作正常。该应用程序使用Socket.IO for Android
  • 当我只使用web-client(yeap,with socket.IO)
  • 时,脚本工作正常
  • 当我使用iOS应用程序时脚本开始下降。
  • 碰撞不是总是发生而不是立即发生。连接后5-10分钟后脚本会掉落,可能会崩溃,但可能没有。

所以,我认为问题出现在socket.io的服务器库中,但只有在iOS客户端连接时才会触发异常。

如何处理此异常?

更新

在我的node.js-server上的OAuth模块中存在问题,该模块试图检查应用令牌但是超时到vk.com 我在node.js服务器上编辑了vkapi模块,添加" on" " https.get"功能: 是:

https.get(options, function(res) {

            var apiResponse = new String();
            res.setEncoding('utf8');

            res.on('data', function(chunk) {
                apiResponse += chunk;
            });

            res.on('end',  function() {
                var o = JSON.parse(apiResponse);
                if (o.error) { self.emit('appServerTokenNotReady', o);

                } else { 
                    self.token = o.access_token;
                    self.emit('appServerTokenReady');
                }
            });
        });

现在:

https.get(options, function(res) {

            var apiResponse = new String();
            res.setEncoding('utf8');

            res.on('data', function(chunk) {
                apiResponse += chunk;
            });

            res.on('end',  function() {
                var o = JSON.parse(apiResponse);
                if (o.error) { self.emit('appServerTokenNotReady', o);

                } else { 
                    self.token = o.access_token;
                    self.emit('appServerTokenReady');
                }
            });
        }).on('error', function(e) {
            console.log('HTTPS error');
        });

1 个答案:

答案 0 :(得分:0)

通常,您可以通过在任何(例如请求,连接等)对象上侦听error事件来处理这些类型的异步错误。

error事件的特殊之处在于,如果在发出事件时当前没有事件处理程序,则会抛出错误。