我正在学习如何使用Socket.io。我的网站建立在Node.js和express上。在这个网站上,我有很多观点。但是,我只想在一个特定视图/dashboard/stream
上使用套接字。换句话说,如果有人访问/dashboard/stream
,我只想打开套接字。我读到的所有文档都暗示我需要在Express中的应用程序级别配置套接字。换句话说,看起来它总是在开启。因此,如果有人使用我的网站,但从未访问过/dashboard/stream
,则服务器上仍会运行套接字。
我错过了什么吗?有没有办法说“如果有人访问/dashboard/stream
为用户激活套接字?”
感谢您帮助我明确这一点。
答案 0 :(得分:1)
Socket.io需要访问支持表达的底层HTTP服务器对象。
所以最简单的形式,因为我确定您可能已经检查了文档,您使用类似的东西将socket.io Server连接到Express
var express = require('express');
var app = express();
var server = require('http').Server(app);
var io = require('socket.io')(server);
因此,它的设计是为了让您有效绑定它到http服务器,然后继续执行io.on
,io.emit
以及所有这些操作。现在,只要你把实际绑定socket.io的代码放到哪里表达,我猜你可以把它放在你想要的任何地方,如果你不想要所有的初始设置,然后简单地定义你的socket.on在路由处理程序中的特定路由。
希望这有点帮助!
答案 1 :(得分:0)
在端点上实现侦听的正确方法是名称空间。
const nsp= io.of('/admin');
nsp.use((socket, next) => {
// ensure the user has sufficient rights
next();
});
nsp.on('connection', socket => {
socket.on('delete user', () => {
// ...
});
});