2012-11-17 64 views
1

我在節點上給我的第一步,並寫一個簡單的聊天應用程序。每當nodejs獲取一個新的套接字連接時,它都會保存在一個簡單的數組中......我的問題是連接關閉時,因爲他的引用仍然存在...... 如何在發送任何事件之前檢查連接是否處於活動狀態她,避免崩潰?socket.io,我如何知道套接字是否保持活動狀態?

回答

4

我打算使用來自socket.io網站的示例。

var io = require('socket.io').listen(80); 

io.sockets.on('connection', function (socket) { 
    var tweets = setInterval(function() { 
    getBieberTweet(function (tweet) { 
     socket.volatile.emit('bieber tweet', tweet); 
    }); 
    }, 100); 

    socket.on('disconnect', function() { 
    clearInterval(tweets); 
    }); 
}); 

在連接它通過一個插座變量。這對每個客戶端都是唯一的,這就是爲什麼socket.emit僅發送給一個客戶端,或者爲什麼廣播將發送給除發送者之外的所有人。

socket.on('disconnect', function() { 
    clearInterval(tweets); 
}); 

注意如何清除間隔?再次,這是客戶特定的,因爲它是發生在一個特定的「窩」,所以你可以這樣做:

socket.on('disconnect', function() { 
    socket.broadcast.emit('disconnected', {user: "film42", status: "disconnected from server"}); 
}); 

Socket.IO將處理心跳/斷開優雅,所以你不必擔心演員,只是處理斷開連接。我希望這對你有用:)。

+0

謝謝!現在我看得更清楚了! –

相關問題