2011-07-25 12 views
10

तो मुझे socket.io के साथ एक्सप्रेस का उपयोग करके यह समस्या है। मुझे लगता है कि यह सुंदर आत्म व्याख्यात्मक है; मुझे बस सत्र प्राप्त करने और socket.io को पैरामीटर डेटा का अनुरोध करने की आवश्यकता है। यह ग्राहक पक्ष पर नहीं किया जा सकता क्योंकि कुछ कमरे निजी होने जा रहे हैं। कोई समाधान?sode.io के साथ अनुरोध डेटा को node.js और एक्सप्रेस के साथ कैसे मिलता है?

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 
}) 

उत्तर

5

Socket.IO 0.7.7 ~ सॉकेट handshake कहा जाता है पर एक नई प्रॉपर्टी का परिचय इस डेटा है कि हम जब ग्राहक यह प्रारंभिक हाथ मिलाना अनुरोध है करता है इकट्ठा होते हैं। इसमें हेडर, आईपी और कुछ अन्य सामान शामिल हैं।

यह विकी https://github.com/LearnBoost/socket.io/wiki/Authorizing विषय को हल्के से छूता है।

+0

फिर भी, मैं कमरे में शामिल होने के लिए socket.io को अनुरोध रूमिड कैसे प्राप्त करूं? –

+0

सत्र स्टोर में 'get' विधि है जो सत्र आईडी को तर्क के रूप में लेती है, ताकि आप कुकी हेडर से सत्र आईडी प्राप्त कर सकें और सत्रस्टोर में इसे फ़ीड कर सकें। लेकिन इसके लिए आपको स्टोर को मैन्युअल रूप से प्रारंभ करने और विकल्पों में इसकी आपूर्ति करने की आवश्यकता होती है: var store = new express.MemoryStore; express.session ({store: store}); और socket.io में से आप store.get ('sessionid', फ़ंक्शन (त्रुटि, डेटा) {// यहां अपने सत्र तक पहुंच सकते हैं}) कर सकते हैं; – 3rdEden

+5

कम से कम मेरे नोडजेएस पर, "हैंडशेक" में सॉकेट.ओओ: '... "url": "/ socket.io/1/?t=1355054837418" ...' पर कॉल के क्वेरी पैरा शामिल हैं। मुझे 'रेफरर' से क्वेरी-स्ट्रिंग पैराम लाने होंगे, उदाहरण के लिए, "आईडी" param: url.parse (socket.handshake.headers.referer, true) प्राप्त करने के लिए .query.id –

संबंधित मुद्दे