0
我在我的rails應用程序上使用socket.io向服務器用戶在線/脫機對數據庫,我使用Redis存儲數據和0離線,1在線狀態 在我的應用程序js文件 socket.io斷開連接和瀏覽器關閉
var app = require('express')() , redis = require('redis') , client = redis.createClient() , server = require('http').createServer(app) , io = require('socket.io').listen(server); server.listen(80); io.sockets.on('connection', function (socket) { console.log("client connected") socket.on('join',function(userid){ socket.set('userid',userid); var utm ="user:"+userid+":online_status"; client.set(utm,1); }); socket.on('disconnect',function(userid){ socket.get('userid',function(err,userid){ var utm ="user:"+userid+":online_status"; client.set(utm,0); }); }); });
和我application.html佈局我包括已socket.io.js我的application.js文件和它運作良好
var socket = io.connect('http://localhost:80');
socket.on('connect',function(data){
var userID = current_user.id;
socket.emit('join',userID);
});
除非用戶在同一時間打開兩個窗口,如果他關閉一個觸發的窗口斷開連接事件並且他的狀態變爲脫機,那麼每個事情都可以正常工作,但是如何才能使斷開連接事件僅在用戶關閉所有窗口時才起作用?
你能提供給我的一些代碼? – 2013-03-02 01:49:09
已添加,但它是近似的,未經測試!希望它給你的想法。 – 2013-03-02 02:28:12
如何將用戶標識傳遞給斷開連接? – chovy 2013-12-09 06:42:38