【发布时间】:2015-11-20 02:09:12
【问题描述】:
我有一个实时应用程序,它可以与 express+passportJS 一起正常工作,并且无需套接字身份验证。 当我添加 passport.socketio 时,我的问题是 只有在我重新启动服务器时才会连接...
我在服务器上有 passportjs 和 passport.socketio,在客户端我有带有 btford.socket-io 的 angularjs:
angular.module('Socket', ['btford.socket-io'])
.factory('socket',['socketFactory', function(socketFactory){
var myIoSocket = io.connect("http://192.168.0.7:8080");
mySocket = socketFactory({
ioSocket: myIoSocket
});
return mySocket;
}]);
当用户登录时,我正在执行socket.connect();。
这似乎在服务器端没有做任何事情,我没有看到任何日志......
根据教程,这是 passport.socketio 的实现
var io = require('socket.io').listen(app.listen(port));
var passportSocketIo = require("passport.socketio");
io.use(passportSocketIo.authorize({
cookieParser: cookieParser,
secret: 'secret',
store: sessionStore,
success: onAuthorizeSuccess,
fail: onAuthorizeFail,
}));
function onAuthorizeSuccess(data, accept){
log.debug('successful connection to socket.io');
return accept();
}
function onAuthorizeFail(data, message, error, accept){
log.debug('unsuccessful connection to socket.io');
if(error){
throw new Error(message);
}
return accept(new Error(message));
}
奇怪的是,当我重新启动服务器时,我可以看到很多日志消息显示我现在尝试连接的所有套接字实际上都已连接。
然后它似乎让用户通过套接字交换并按预期工作。
有人知道会发生什么吗?
【问题讨论】:
标签: angularjs node.js socket.io passport.js passport.socketio