使用Socket.io,Angular,JWTvalidation数据直到用户validation刷新后才可用
我正在使用Angular和Socket.io,socket-jwt用于身份validation套接字,以及angular-socket-io在前端。
当页面加载时,客户端尝试连接到socket.io服务器。 它被拒绝是因为它们没有为客户build立令牌。
当套接字连接build立时,我正在解码服务器上的令牌,然后我想向客户端发送数据,包括socket.id,我将更新模型和视图。
用户进行身份validation之后,直到页面刷新为止,socket.io数据才可用,然后发送到客户端。
如何在用户login并使数据可用后build立socket.io连接?
我曾尝试调用我的套接字工厂,用户login后使用login控制器内的socket.connect()和io.connect()。
sockets工厂
app.factory('socket', function ($window, socketFactory) { var token = $window.localStorage.yourTokenKey; var myIoSocket = 'http://localhost:8080'; var socket = io.connect(myIoSocket, {'query' : 'token=' + token}); return socket; });
login控制器loginfunction
$scope.login = function() { AuthService.login($scope.user) .then(function(msg) { socket.connect(); $state.go('home'); }, function() { console.log('Login Failed'); }); };
服务器代码
var socketIo = require('socket.io'); var io = socketIo.listen(server); io.use(socketioJwt.authorize({ secret: config.secret, handshake: true })); io.on("connection", function(socket) { var token = socket.handshake.query.token; var decoded = jwt.decode(token); var user = { name: decoded._doc.name, userId: decoded._doc._id, socketId: socket.id }; socket.emit('other event', user); });
- 如何使用Django身份validation在Node应用程序中对用户进行身份validation?
- 我无法使用passport-facebook来validation路线
- 如何在nodjes服务器中使用Kerberos?
- 在callback函数中,Passport-Facebook访问req对象
- 处理令牌的体系结构(NodeJS)(MongoDB)
- 在Node.js中针对WordPressvalidation请求
- 使用node.js,nano和CouchDB进行身份validation
- 我如何使用Passport.js返回到当前散列位置?
- 没有Passport.js的Google +身份validation