我有一個實時的應用程序,可以正常工作與express + passportJS和沒有套接字身份驗證。 當我添加passport.socketio,我的問題是,插座只會當我重新啓動服務器passport.socketio和客戶端連接/重新連接只有當重新啓動服務器
我已經得到& passport.socketio在服務器和客戶端上我已經passportjs連接...有angularjs與btford.socket-io:
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));
}
的奇怪的是,當我重新啓動服務器時,我可以看到很多日誌消息,顯示我嘗試連接的所有套接字實際上都連接。
然後它似乎讓用戶通過套接字交換,並按預期工作。
任何人都知道可能發生了什麼?
謝謝,這似乎工作 – user1144446