Vì vậy, tôi có vấn đề này bằng cách sử dụng express với socket.io. Tôi nghĩ nó khá tự giải thích; Tôi chỉ cần nhận phiên và yêu cầu dữ liệu tham số đến socket.io. Điều này không thể được thực hiện ở phía khách hàng vì một số phòng sẽ là riêng tư. Bất kỳ giải pháp?Làm thế nào để bạn nhận được dữ liệu yêu cầu với socket.io với node.js và express?
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
})
Mặc dù vậy, làm thế nào tôi có thể yêu cầu roomid đến socket.io để tham gia phòng? –
Cửa hàng phiên có phương thức 'get' lấy id sessiond làm đối số, vì vậy bạn có thể lấy sessionid từ tiêu đề cookie và nạp nó trong sessionStore. Nhưng điều này yêu cầu bạn phải khởi tạo cửa hàng theo cách thủ công và cung cấp trong tùy chọn: var store = new express.MemoryStore; express.session ({store: store}); và hơn trong socket.io bạn có thể lưu store.get ('sessionid', hàm (err, data) {// truy cập phiên của bạn tại đây}); – 3rdEden
Ít nhất là trên NodeJS của tôi, "bắt tay" bao gồm các tham số truy vấn của cuộc gọi đến socket.io: '... "url": "/ socket.io/1/?t=1355054837418" ...', vì vậy Tôi đã phải lấy các tham số chuỗi truy vấn từ 'referer', ví dụ, để lấy param "id": url.parse (socket.handshake.headers.referer, true) .query.id –