2016-11-01 7 views
5

मैं कनेक्ट में एक निश्चित सॉकेट.io कमरे में शामिल होने के लिए उपयोगकर्ता में लॉग इन करने का प्रयास कर रहा हूं। नेट पर पाए गए किसी भी उदाहरण के मुताबिक मुझे कुछ कमरे में शामिल होने में सक्षम होने के लिए क्लाइंट से कुछ कार्रवाई मिल गई है। कुछ की तरह:कनेक्ट पर सॉकेट आईओ रूम में शामिल हों

socket.on('connect', function() { 
    socket.emit('join', 'room1'); 
}); 

Server.js:

io.sockets.on('connection', function(socket) { 
    socket.on('join', function(room) { 
     socket.join(room); 
    }); 
}); 

और अनुसार सबसे ट्यूटोरियल के लिए यह काम करना चाहिए।

मुझे क्या करना सोच रहा हूँ के लिए है:

socket.on('connect', function() { 
    socket.join('room1'); 
}); 

लेकिन यह जो कुछ भी msg मैं सर्वर से फेंकना ग्राहक पर पकड़ा नहीं कर रहे हैं के रूप में काम करने के लिए प्रतीत नहीं होता। कोई विचार, मैं क्या गलत कर रहा हूँ? क्या यह सामान्य रूप से संभव है?

+0

चेक बाहर http://stackoverflow.com/questions/19150220/creating-rooms-in-socket-io – sova

+0

आप अंदर में शामिल होने के सर्वर पक्ष क्लाइंट पक्ष में नहीं है – Beginner

उत्तर

5

ग्राहक पक्ष पर कोई .join() विधि नहीं है। कमरे पूरी तरह से सर्वर-साइड निर्माण हैं और ग्राहक उनके बारे में कुछ नहीं जानते हैं।

कोड का पहला ब्लॉक चीजों को करने का वांछित तरीका है। आप सर्वर को अपने डिज़ाइन का संदेश भेजते हैं, यह एक कमरे में सॉकेट में शामिल होने के लिए कहता है और .join() सर्वर पक्ष पर निष्पादित किया जाता है।

3

यह वही होना चाहिए जो आपको चाहिए। क्लाइंट के माध्यम से जो भी कमरा नाम आप चाहते हैं उसे पास करने के लिए स्वतंत्र महसूस करें। केवल सर्वर एक कमरे में एक सॉकेट असाइन करने में संभाल सकता है।

सर्वर:

io.sockets.on('connection', function(socket) { 
    socket.on('join', function(room) { 
    socket.join(room); 
    }); 
}); 

ग्राहक:

socket.emit('join', roomNum); 
1

यह आसानी से हासिल की है। आपको केवल एक क्वेरी पैरामीटर के साथ पास करना है जो सर्वर समझता है।

निम्नलिखित उदाहरण पूरी तरह से परीक्षण नहीं किया गया है, लेकिन विचार काम करेगा। इस उदाहरण में, कमरे का नाम ग्राहक पर window.location.href से निर्धारित किया गया है।

ग्राहक

// Last segment of path is roomName 
var roomName = window.location.href.substr(window.location.href.lastIndexOf('/') + 1); 
var socket = io({ 
    query: { 
     roomName: roomName, 
    }, 
}); 

सर्वर

var io = require('socket.io')(server); 
io.on('connection', function(socket) { 
    var query = socket.handshake.query; 
    var roomName = query.roomName; 
    if(!roomName) { 
     // Handle this as required 
    } 
    socket.join(roomName); 
}); 
संबंधित मुद्दे