Node.js socket.io我应该使用什么文件室或名称空间?
我正在开发一个聊天应用程序,但我不知道是否应该使用聊天室或名称空间,以及如何使用 我的应用程序大致如下所示: 体育(频道)Node.js socket.io我应该使用什么文件室或名称空间?,node.js,socket.io,Node.js,Socket.io,我正在开发一个聊天应用程序,但我不知道是否应该使用聊天室或名称空间,以及如何使用 我的应用程序大致如下所示: 体育(频道) 体育频道(子频道) 体育频道(子频道) 政治(频道) 政治A(副频道) 政治组B(副频道) 政治科(副频道) 等等 我的要求: 非身份验证用户只能读取通道中的邮件。 身份验证用户可以在通道和子通道中读取和写入消息 非授权用户可以同时在多个通道中(加入和离开)。 身份验证用户可以同时在多个通道和子通道中(加入和离开)。 这意味着 这有点复杂,因此我不知道应该在哪里使用
- 体育频道(子频道)
- 体育频道(子频道)
- 政治A(副频道)
- 政治组B(副频道)
- 政治科(副频道)
io.use((socket, next) => {
if (socket.handshake.query && socket.handshake.query.token) {
jwt.verify(socket.handshake.query.token, process.env.JWT_SECRET, (err, decoded) => {
if (err) return next(new Error('Socket authentication error'));
socket.decoded = decoded;
next();
});
} else {
next(new Error('Socket authentication error'));
}
});
基本上,当您需要单独的端点或路径时,可以使用
名称空间。
根据官方文件
这是一个非常有用的功能,可以最大限度地减少资源数量(TCP)
连接),同时在您的内部分离关注点
通过在通信信道之间引入分离来实现应用
//服务器
常量sportsIo=io.of('/s');
运动IO.on('连接'),功能(插座){
log(“有人连接”);
});
所以本质上这意味着对于每个名称空间,您的客户端(webapp)必须创建一个单独的连接
//客户端
const sportsIo=io(“/sports”);
const politicsIo=io(“/politics”);
现在,对于每个名称空间,您可以有一个或多个与套接字可以加入和离开的房间
(或频道
)相关联
//服务器
//在某个时刻,当你想去通道(房间)时
体育运动:发射(某个事件);
//客户端
运动IO.on('连接'),功能(插座){
socket.join('Sport_A');
socket.join('Sport_B');
});
有关更多信息,请参阅。基本上,当您需要单独的端点或路径时,可以使用名称空间。
根据官方文件
这是一个非常有用的功能,可以最大限度地减少资源数量(TCP)
连接),同时在您的内部分离关注点
通过在通信信道之间引入分离来实现应用
//服务器
常量sportsIo=io.of('/s');
运动IO.on('连接'),功能(插座){
log(“有人连接”);
});
所以本质上这意味着对于每个名称空间,您的客户端(webapp)必须创建一个单独的连接
//客户端
const sportsIo=io(“/sports”);
const politicsIo=io(“/politics”);
现在,对于每个名称空间,您可以有一个或多个与套接字可以加入和离开的房间
(或频道
)相关联
//服务器
//在某个时刻,当你想去通道(房间)时
体育运动:发射(某个事件);
//客户端
运动IO.on('连接'),功能(插座){
socket.join('Sport_A');
socket.join('Sport_B');
});
有关更多信息,请参阅。@jfriend00我发现你的答案对其他套接字问题非常有用,你能帮我解答这个问题吗?@jfriend00我发现你的答案对其他套接字问题非常有用,你能帮我解答这个问题吗?