我正在使用nodejs和mongoDB,但我遇到了一些连接问题。
实际上是“唤醒”问题! 它可以很好地连接 - 非常快速,我通常对结果很满意。
我的问题: 如果我不使用连接一段时间(时间范围变化5分钟以上),它似乎会停顿。 我没有收到断开连接事件 - 它只是挂起。
最终,我会得到一个错误响应:Error: failed to connect to [ * .mongolab.com: * ] - ( * = masked values)
重新启动应用程序后,连接就可以正常工作了。 有时,如果我不重新启动应用程序,我可以刷新并重新连接。
这就是为什么我认为这是“唤醒”问题的原因。
代码大致概述:
我没有包含代码 - 我认为没有必要。 它可以工作(除了连接中断)
需要注意的事项: 只有一个“connect” - 我从未关闭它。 我从未重新打开过。
/* constants */
var mongoConnect = 'myworkingconnectionstring-includingDBname';
/* includes */
/* settings */
/* Schema */
var db = mongoose.connect(mongoConnect);
/* Socketio */
io.configure(function (){
io.set('authorization', function (handshakeData, callback) {
});
});
io.sockets.on('connection', function (socket) {
});//sockets
io.sockets.on('disconnect', function(socket) {
console.log('socket disconnection')
});
/* The Routing */
app.post('/login', function(req, res){
});
app.get('/invited', function(req, res){
});
app.get('/', function(req, res){
});
app.get('/logout', function(req, res){
});
app.get('/error', function(req, res){
});
server.listen(port);
console.log('Listening on port '+port);
db.connection.on('error', function(err) {
console.log("DB connection Error: "+err);
});
db.connection.on('open', function() {
console.log("DB connected");
});
db.connection.on('close', function(str) {
console.log("DB disconnected: "+str);
});
我尝试过各种配置,比如一直开着和关着 - 我认为,普遍共识是像我这样只打开一个包含所有内容的标签。
我尝试了一个连接测试器,它不断检查连接的状态...即使看起来一切都正常 - 问题仍然出现。
从一开始就遇到了这个问题。我一直使用MongoLab托管MongoDB。 这个问题在本地主机上似乎更严重。但是我在Azure和nodejit.su上仍然有这个问题。
既然每个地方都会发生 - 这一定是我、MongoDB或mongolab的问题。
顺便说一句,我在使用php驱动程序时也有类似的经历。(确认这是在nodejs上)
如果有人能提供帮助,甚至只是告诉我“这很正常”,那就太好了。
提前感谢
罗布