Mam ten problem używając express z socket.io. Myślę, że jest to dość samo wyjaśniające; Po prostu potrzebuję uzyskać sesję i zażądać danych parametrów do pliku socket.io. Nie można tego zrobić po stronie klienta, ponieważ niektóre pokoje będą prywatne. Jakieś rozwiązania?Jak uzyskać dane żądania za pomocą pliku socket.io z plikiem node.js i wyrazić?
io.sockets.on('connection', function (socket) {
socket.join(ROOM ID)
socket.on('send message', function(data) {
NEED USER ID STORED IN session.user
}
})
app.get('/:roomid', function (req, res) {
//req.session.user = THE USER ID
//req.params.roomid = THE ROOM ID
})
Nadal jednak, jak mogę uzyskać żądanie roomid do socket.io, aby dołączyć do pokoju? –
Magazyn sesji ma metodę 'get', która pobiera argument sessiond id jako, więc możesz pobrać identyfikator sessionid z nagłówków plików cookie i podać go w magazynie sessionStore. Ale to wymaga ręcznego zainicjowania magazynu i podania go w opcjach: var store = new express.MemoryStore; express.session ({sklep: sklep}); , a następnie w socket.io możesz zrobić store.get ("sessionid", funkcja (err, data) {// dostęp do twojej sesji tutaj}); – 3rdEden
Przynajmniej na moim NodeJS, "handshake" zawiera parametry zapytania połączenia do socket.io: "..." url ":"/socket.io/1/?t=1355054837418 "...", więc Musiałem pobrać parametry ciągu zapytań z "referer", na przykład, aby uzyskać "id" param: url.parse (socket.handshake.headers.referer, true) .query.id –