假设我有一个网站,主页上不需要网络套接字,但是在某些其他相对路径(例如'/ new')上需要它.
假设我需要"连接"事件,以便计算登录"主页"页面和"新"页面的用户.
我试图在相对路径中配置socket.io'connection'事件,如:
app.get('/new',
function(req,res) {
io.sockets.on('connection', function (socket) {
.....
}
});
Run Code Online (Sandbox Code Playgroud)
但:
怎么做到呢 ?
fre*_*ish 16
回答你的问题:
显然,因为当用户点击/new其处理程序时触发并添加连接处理程序io.这是一个巨大的内存泄漏.
这与上面的相关.您不希望每次用户点击时都添加连接处理程序/new.
现在解决你的问题我认为最好的想法就是打电话(在浏览器端)
io.connect("http://localhost/new");
Run Code Online (Sandbox Code Playgroud)
然后在你的Node.js应用程序中:
io.of("/new").on("connection", function (socket) {
// here are connections from /new
});
Run Code Online (Sandbox Code Playgroud)
代码应放在顶层,而不是放在路由处理程序中.如果您希望它更具动态性,那么您可以创建自己的子协议:
io.connect("http://localhost);I'm in /new;当然,您可以在路由处理程序中指定是否希望客户端连接到socket.io服务器(仅通过传递某种标志).