更改Socket.io命名空间

更改Socket.io命名空间,socket.io,yeoman,Socket.io,Yeoman,我希望webapp(yeoman)上的套接字连接(socket.io)具有以下功能: 非登录用户访问web应用时。客户端套接字的默认设置是侦听“/welcome”命名空间。当用户登录webapp时,客户端套接字将更改为侦听另一个命名空间(“/home”)。然后,当用户注销时,客户端套接字将更改回侦听“/welcome”命名空间 图书馆: 插座: 约曼:我是这样做的: 在呈现某个模板时,我(通过服务器端的中间件)向视图传递一个附加参数,如isLoggedIn,当然,当用户登录时,这是真的 在视图模

我希望webapp(yeoman)上的套接字连接(socket.io)具有以下功能:

非登录用户访问web应用时。客户端套接字的默认设置是侦听“/welcome”命名空间。当用户登录webapp时,客户端套接字将更改为侦听另一个命名空间(“/home”)。然后,当用户注销时,客户端套接字将更改回侦听“/welcome”命名空间

图书馆:

插座:

约曼:我是这样做的:

  • 在呈现某个模板时,我(通过服务器端的中间件)向视图传递一个附加参数,如
    isLoggedIn
    ,当然,当用户登录时,这是真的

  • 在视图模板内部,我创建了一个隐藏的dom元素,并将其赋值为“isLoggedIn”

  • 在websocket连接之前的客户端js文件中,我读取了p2隐藏的DOM值,以了解下一步要做什么。不幸的是,p2和p3是我所知道的通常将值分配给客户端上传递给视图的JavaScript变量的唯一方法。当然,您可以通过API调用来执行,但不管怎样

  • 根据此变量,通过简单的
    if
    语句连接到
    /welcome
    /home


  • 您在socket.io中尝试过此用例的“房间”概念吗?房间不能有单独的身份验证设置