所以我有一个webapp,它有两种类型的用户。尚未进行身份验证的公共用户和已登录并对自己进行身份验证的私人用户。我在单页应用程序中使用基于令牌的身份验证,页面初始加载后没有页面刷新。因此,用户第一次访问站点时未经过身份验证,因此没有可用的令牌。然后,他进行身份验证,这将向他返回一个令牌,该令牌可用于检查node.js是否在服务器端对他进行了身份验证。现在,我还有一些从node.js发送到客户端的实时消息。将有两种类型的消息。我需要向公共和私有客户端发送公共消息,并且在客户端进行身份验证之后,我还需要能够向经过身份验证的用户发送私有消息(例如,当他的帐户余额在数据库中发生变化时,我希望向私有客户端发送通知)。这些私人消息应该受到保护。
现在,我有点困惑于什么是实现这一目标的最佳实践。
在单页面应用程序中同时提供公共和私有socket.io的最佳方式是什么?
我在客户端使用angular.js,但这可能并不重要(使用https://github.com/btford/angular-socket-io)
如果你能帮我指出正确的方向,我将非常感谢!
发布于 2014-06-02 08:34:09
Socket.io提供了一些工具,如房间或名称空间来提供帮助。
在您的例子中,我认为最好的解决方案是拥有两个名称空间。一个用于未登录用户,另一个用于已登录用户。
仅当需要时,才能在一个命名空间上使用授权。
然后,如果需要,您可以在名称空间中进行广播。
io.of('/user').on('connection', function (socket) {
//Manage socket
}
io.of('/operator').authorization(function (handshakeData, callback) {
if(isAuthorized){
callback(null,true);
}else{
callback(null,false);
}
}).on('connection', function (socket) {
//Manage the socket
}
io.of('/operator').emit('msg', { text:text});
https://stackoverflow.com/questions/23988291
复制相似问题