ios - Node.js 中的异常 ETIMEDOUT

标签 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 应用程序时,脚本工作正常。该应用使用 Android 版 Socket.IO
  • 当我仅使用 Web 客户端(是的,使用 socket.IO)时,脚本工作正常
  • 当我使用 iOS 应用程序时,脚本开始下降。
  • 崩溃并不总是发生,也不会立即发生。连接后 5-10 分钟后脚本会崩溃,可能会崩溃,但也可能不会。

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

如何处理这个异常?

更新

我的 Node.js 服务器上的 OAuth 模块存在问题,它尝试检查应用程序 token ,但 vk.com 超时 我在我的 node.js 服务器中编辑了 vkapi 模块,为“https.get”函数添加了“on”事件: 是:

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');
        });

最佳答案

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

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

关于ios - Node.js 中的异常 ETIMEDOUT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32444764/

相关文章:

json - 如何从传递到 js 服务器的 JSON 对象中解析字符串数据?

ios - 在另一个 View Controller 中设置 UIImageView

ios - button.isHidden 在再次点击按钮 View (背景)后再次消失

javascript - 当我向其中发送另一个 promise 时,promise.then() 不起作用

javascript - 断开并手动重新连接 Socket.IO

javascript - Socket.io 中的 `.acks` key 是什么

ios - 使用 restoreCompletedTransactions() 时没有得到任何响应

ios - 当您的应用程序打开并位于前台时显示一个 iOS 通知横幅?

javascript - 如何通过 ejs 向 Javascript 传递数组值?

node.js - 微软机器人框架: Saving the chat history