2013-09-01 83 views
4

我正在使用Node.js,Express,Redis和Socket.io。當Redis關閉時,Node.js將終止。nodejs在redis失敗時終止

我該如何防止這種情況,可能是代碼重新連接的地方呢?

輸出:

info - socket.io started 
Express server listening on port 3000 

錯誤:

events.js:72 
     throw er; // Unhandled 'error' event 
      ^Error: Redis connection to 127.0.0.1:6380 failed - connect ECONNREFUSED 
    at RedisClient.on_error (...../node_modules/redis/index.js:151:24) 
    at Socket.<anonymous> (...../node_modules/redis/index.js:86:14) 
    at Socket.EventEmitter.emit (events.js:95:17) 
    at net.js:426:14 
    at process._tickCallback (node.js:415:13) 
+0

遺憾的錯誤消息。不知道如何在這裏格式化它們。 – twb

+0

如果您可以將以下答案標記爲已接受,這將是一件好事 - 這是一個有用的答案。 –

+0

已經很久了。我不記得太多。你認爲這是答案嗎?如果是這樣,我會標記它。 – twb

回答

9

好像你沒有爲你的Redis客戶端實例的錯誤處理程序。你能提供你的代碼摘錄嗎?可能我們可以更好地幫助你。只是一個錯誤信息少一點。

如果我猜的話,我會說你有沒有錯誤處理程序...

在這裏看到:https://github.com/mranney/node_redis#usage

你的錯誤回調有?

例子:

var redis = require("redis"), 
client = redis.createClient(); 


// This is required so your error doesn't bubble 
// upwards and kills your instance 

client.on("error", function (err) { 
    console.log("Error " + err); 
}); 

的node_redis客戶端將自動重新連接,所以你並不需要處理,雖然可以配置MAX_ATTEMPTS次和其他選項。在這裏看到:https://github.com/mranney/node_redis#rediscreateclientport-host-options

我希望我能提供一些有用的信息

+0

我會試試這個。謝謝! – twb

+0

它解決了你的問題嗎? –