Created
September 3, 2013 07:10
-
-
Save zakky-dev/6420581 to your computer and use it in GitHub Desktop.
node.js + socket.io + redisstoreで何故かソケット情報が蓄積する。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var SERVER_PORT = 80; | |
var LIFE_TIME = 30000; | |
var REDIS_HOST = "xxx.xxx.xxx"; | |
var REDIS_PORT = 6379; | |
var http = require('http'); | |
var io = require('socket.io'); | |
var server = http.createServer(); | |
var manager = null; | |
var namespace = null; | |
var diff = 0; | |
function initSocket(socket) { | |
setTimeout(function() { | |
socket.disconnect(); | |
}, LIFE_TIME); | |
socket.join("test.1234"); | |
socket.on("disconnect", function() { | |
diff -= 1; | |
}); | |
} | |
function countup(dict) { | |
var res = 0; | |
for(var i in dict) { | |
res += 1; | |
} | |
return res; | |
} | |
server.on("request", function(req, res) { | |
if (namespace) { | |
// 管理情報を表示 | |
var log_params = { | |
count : countup(namespace.sockets), | |
trans : countup(manager.transports), | |
hands : countup(manager.handshaken), | |
connects : countup(manager.connected), | |
opens : countup(manager.open), | |
closes : countup(manager.closed), | |
rooms : countup(manager.rooms), | |
roomClients : countup(manager.roomClients) | |
} | |
console.log("clients", log_params); | |
} | |
res.writeHead(200, {'Content-Type': 'text/plain'}); | |
res.end("end"); | |
}); | |
var configure = { | |
'polling duration': 2, | |
'close timeout': 20 | |
}; | |
manager = io.listen(server, configure); | |
// RedisStoreを利用するとソケット情報が蓄積する | |
var options = { | |
redisPub: {port: REDIS_PORT, host: REDIS_HOST}, | |
redisSub: {port: REDIS_PORT, host: REDIS_HOST}, | |
redisClient: {port: REDIS_PORT, host: REDIS_HOST} | |
}; | |
manager.set("store", new (require('socket.io/lib/stores/redis'))(options)); | |
namespace = manager.sockets.on("connection", function(socket) { | |
diff += 1; | |
initSocket(socket); | |
}); | |
server.listen(SERVER_PORT); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment