Tag: 超时

处理从nodejs到mongo db的连接丢失

我试图得到“连接丢失”或类似的连接时,nodejs和mongodb服务器之间的连接丢失。 我使用本机驱动程序,并有以下代码 var mongo = require('mongodb'); var server = new mongo.Server('host', 'port', { auto_reconnect: true, socketOptions: { keepAlive: 10, connectTimeoutMS: 1000, socketTimeoutMS: 0 } }); var db = new mongo.Db( 'dbname', server, { w: 1, wtimeout: 1000, numberOfRetries: 100, auto_reconnect: true } ); db.on('close', function () { console.log('Error…close'); }); db.on('error', function (err) { console.log('Error…error', err); […]

Node.JS:setTimeout不保持进程运行

我想给这个过程增加一个小时的超时时间,以防止在stream死锁的情况下永远停留。 唯一的问题是如果我说setTimeout,这个过程没有机会提前结束。 有一种方法可以在大约一个小时后强制退出超时,而不会使进程继续运行? 或者我坚持使用process.exit和做没有这个超时?

需要在expressjs中减less路由的超时时间

在expressjs中有一种方法可以设置每个路由的超时限制。 我有一些路线可能需要30-45秒处理(大量的任务) 然后其他路线,如果需要超过5秒钟,我希望它超时。 我想我问是否有一种方法来全局设置请求的超时限制,并有办法在路线上单独做到这一点。

Google App Engine Node.js应用程序不健康

我试图在谷歌应用程序引擎上testing一个相当直接的node.js应用程序。 如下所示,它所要做的就是听取Firebase数据库中的更改,然后将GCM消息发送给用户: var Firebase = require("firebase"); var gcm = require('node-gcm'); // Create a reference to the push notification queue var ref = new Firebase("firebaseDB"); var message = new gcm.Message(); var regTokens = ['A user GCM reg token']; // Set up the sender with you API key var sender = new gcm.Sender('GCM sender ID'); message.addData('syncNewData', 'Hello […]

Heroku上的Node.js Web Socket H15空闲连接超时

我们在Heroku上运行Node.js和Express应用程序,使用ws库实现实时web套接字。 下面是我们看到的众多H15超时的屏幕截图。 我读过Heroku在55秒后终止任何空闲连接,但是当连接打开时,我们的套接字每5秒钟来回发送一次乒乓。 下面是一段服务器代码: var _this = this; this.server.on('connection', function(ws){ // check for a ping, respond with pong ws.on('message', function(data){ data = data.toString('utf8'); if (data === PING) { ws.send(PONG); } }); ws.on('close', function(err){ TL.logger.info('Socket closed: '+path); _this.sockets = _.filter(_this.sockets, function(_ws){ return ws != _ws; }); }); ws.on('error', function(err){ TL.logger.info('Socket error: '+path); _this.sockets = _.filter(_this.sockets, function(_ws){ […]

在socket.io上设置一个很高的closures超时是否安全?

我有一个Web应用程序,用户需要不断连接。 默认情况下,socket.io将在60秒后断开连接。 我已经打开了“重新连接”,所以基本上每分钟都会closures并重新打开连接。 这可能会导致Feed /通知给我连接的客户端。 将这个超时设置为10分钟还是更高可以安全吗? 现在有这么低的原因吗?

超时在asynchronous/等待

我与Node.js和TypeScript,我正在使用async/await 。 这是我的testing用例: async function doSomethingInSeries() { const res1 = await callApi(); const res2 = await persistInDB(res1); const res3 = await doHeavyComputation(res1); return 'simle'; } 我想为整体function设置一个超时时间。 即如果res1需要2秒, res2需要0.5秒, res3需要5秒我想有一个超时,3秒后,让我抛出一个错误。 使用正常的setTimeout调用是一个问题,因为范围已经丢失: async function doSomethingInSeries() { const timerId = setTimeout(function() { throw new Error('timeout'); }); const res1 = await callApi(); const res2 = await persistInDB(res1); const res3 […]

如何处理ETIMEDOUT错误?

如何处理此通话的etimedout错误? var remotePath = "myremoteurltocopy" var localStream = fs.createWriteStream("myfil");; var out = request({ uri: remotePath }); out.on('response', function (resp) { if (resp.statusCode === 200) { out.pipe(localStream); localStream.on('close', function () { copyconcurenceacces–; console.log('aftercopy'); callback(null, localFile); }); } else callback(new Error("No file found at given url."), null); }) 有办法等待更长的时间? 或再次请求远程文件? 究竟会导致这个错误? 只有超时?

使用Node.js和mongodb处理超时

我目前正在testing一些代码如何站在以下的情况: Node.js应用程序启动并成功build立到mongodb的连接 在成功build立连接之后,mongodb服务器将停止,所有后续请求都会失败 要做到这一点,我已经得到了使用官方驱动程序(在这里find: https : //github.com/mongodb/node-mongodb-native )的代码: MongoClient.connect('mongodb://localhost:27017/testdb', function(err, db) { app.get('/test', function(req, res) { db.collection('users', function (err, collection) { console.log(err); if (err) { // ## POINT 1 ## // Handle the error } else { collection.find({ 'username': username }, { timeout: true }).toArray(function(err, items) { console.log(err); if (err) { // ## POINT 2 […]

node.js在发出http请求时区分错误

我的node.js应用程序使用http.request到REST API http://army.gov/launch-nukes ,我需要区分三种可能的情况: Success – 服务器答复肯定。 我知道我的敌人被毁灭了。 Failure – 我收到来自服务器的错误, 或者无法连接到服务器 。 我仍然有敌人。 Unknown – build立到服务器的连接后 ,我发送了请求 – 但不知道发生了什么。 这可能意味着请求永远不会将其发送到服务器,或者服务器对我的响应从未做到。 我可能会也可能不会刚刚开始一场世界大战。 正如你所看到的,鉴别Failure和Unknown情况对我来说是非常重要的,因为它们有着非常不同的后果和我需要采取的不同的行动。 我也非常喜欢使用http Keep-Alive,正如我能说的那样,我是一个战争贩子,并计划以连发的方式提出大量请求(然后长时间没有任何请求) – 问题的核心是如何将连接错误/超时(这是一个Failure )与请求被置于连线(这是一个Unknown )之后发生的错误/超时分开。 在伪代码逻辑中,我想这样做: var tcp = openConnectionTo('army.gov') // start a new connection, or get an kept-alive one tcp.on('error', FAILURE_CASE); tcp.on('connectionEstablished', function (connection) { var req = connection.httpGetRequest('launch-nukes'); req.on('timeout', […]