我試圖從由Node.js服務器使用Express.js框架觸發的'升級'事件訪問會話對象。我已經正確設置了會話支持,並且可以從標準.get .post .put和.delete方法訪問它,例如。Node.js + Express.js(連接) - 從'升級'事件訪問會話
app.get('/', function(req, res) {
req.session.test = 'Hello world'; // Works fine
res.render('index');
});
但如果我勾了一個關於「升級」事件的服務器上,像這樣:
app.on('upgrade', function(req, socket) {
var message = req.session.test; // Doesn't work
});
我無法訪問會話對象。就我所知,連接會話中間件僅掛接get/post/put/delete方法的會話,但不掛接'upgrade'等自定義事件。我試圖從最初的WebSocket握手訪問會話。我想在WebSocket握手期間從客戶端發出'升級'事件。會話cookie肯定是有在握手例如在HTTP標頭:
app.on('upgrade', function(req, socket) {
var cookieHeader = req.headers['cookie'];
console.log(cookieHeader);
});
...將輸出連接會話cookie。是否有可能使用原始會話cookie令牌手動構建會話對象?
更新:一直講要到一些人對Node.js的IRC聊天室,顯然這是要麼非常difficalt或不可能的。 Connect中間件不會暴露於自定義/異常事件,如「升級」。他們說,以提高在Github上的問題,所以在這裏它是:
https://github.com/senchalabs/connect/issues/342
我可能會嘗試使用會話存儲創建會話,如您所建議的。但是這個事件在node.js級別上已經有了。 –