通过 Socket.IO 的 WebSocket 设计模式

Posted

技术标签:

【中文标题】通过 Socket.IO 的 WebSocket 设计模式【英文标题】:Design pattern for WebSockets through Socket.IO 【发布时间】:2016-06-23 16:52:51 【问题描述】:

我正在使用 WebSockets 构建一个复杂的聊天应用程序。我使用 Node.JS 的 Socket.IO 库来实现协议。我应该为每个聊天创建单独的命名空间,还是为每个聊天创建单独的房间?

Socket.IO 中的命名空间和房间的主要区别是什么?

【问题讨论】:

【参考方案1】:

如果所有客户端都属于同一类型,通常会使用房间。

如果有不同类型的客户端,请使用命名空间。例如,匿名用户和经过身份验证的用户。在这种情况下,可能需要以不同的方式处理传入的连接请求。

var guest = io.of('/guest');
guest.on('connection', function(socket) 
   console.log('A guest client connected');
);

var user = io.of('/user');
user.on('connection', function(socket) 
   var authenticated = authenticate(); //authenticate the user
   if (!authenticated) 
      // log attempt and disconnect the client
   
);

【讨论】:

以上是关于通过 Socket.IO 的 WebSocket 设计模式的主要内容,如果未能解决你的问题,请参考以下文章

怎么使用 Socket.io 连接 WebSocket 服务

Socket Socket.io Websocket HTTP 之间的区别

websocket与socket.io

通过 PHP 连接到 socket.io(nodejs)

websocket——通信梳理(短轮询、长轮询、socket、websocket、socket.io)

聊天功能插件Socket.io