我有一个非常简单的socket.io服务器设置。我的需求是能够通过套接字在服务器和客户端之间进行通信,但始终采用一对一模式。 因此,我在客户端上创建了一些简单的东西:
var socket = io();
socket.on('connect',function(){
socket.emit('connected', UserName);
});
而不是在服务器上:
io.on('connection', function (socket) {
socket.on('connected', function (userName) {
if (userName !== null) {
socket.join("RoomFor:"+ userName);
}
});
});
因此,每个用户都有自己的房间,我现在可以与之通信,我可以使用我的应用程序userName(而不是套接字ID)来执行此操作。
现在,在同一个套接字IO服务器上,我也有明确的倾听,如下所示:
app.get('/notify', function(req, res) {
var data = querystring.parse(req.url.split('?')[1]);
var userName = data.clientId;
io.sockets.to('RoomFor:'+ userName).emit('notice', {event: data.event });
res.writeHead(returnCode, {'Content-Type': 'text/plain'});
res.end();
});
所以,一个非常简单的服务器端信令解决方案。
然而,这个设置中的某些内容正在泄漏,我已经创建了heapdumps并试图比较结果,但无法从中得出任何结果。
有什么想法吗?
(顺便说一下,我查看了与node + socket.io内存泄漏相关的所有线程,没有我的情况......我不使用redis存储,我运行的是最新的节点和套接字。 io版本。)