2011-09-20 15 views
16

मुझे यकीन है कि यह एक साधारण सवाल है, लेकिन मुझे नहीं पता कि socket.io दस्तावेज़ कहां हैं और http://labs.learnboost.com/socket.io/ पर कोई वास्तव में मदद नहीं करता है।socket.io पर सॉकेट सर्वर की ओर बंद करना?

तो मान लें कि मेरे पास socket.io http सर्वर है और उससे कनेक्ट करने के लिए एक वेबसाइट लिखी है।

  1. मैं कैसे सर्वर से सुरक्षा प्रदान करते हैं, ताकि अनधिकृत लोगों (जो लोग वेबसाइट के माध्यम से नहीं जुड़ा है) अवरुद्ध हो जाएगा/छोड़ दिया/पर प्रतिबंध लगा दिया है।

  2. मैं सर्वर पक्ष पर सॉकेट कनेक्शन कैसे समाप्त करूं? तो अगर मैं

    io.sockets.on('connection', function (socket) { 
    socket.on('end', function() { 
        var i = global_sockets_list.indexOf(socket); 
        global_sockets_list.splice(i, 1); 
        }); 
    
        socket.emit('end'); // Doesn't work, just sends data 
        socket.end(); //error 
    
    }); 
    

है कैसे मैं एक सॉकेट कनेक्शन समाप्त हो? (कनेक्ट तो ऊपर डिस्कनेक्ट परीक्षण के लिए है)

+0

कैसे एक अनाधिकृत तरीके से जोड़ने लोग हैं फोन करना चाहिए। मैं socket.io के साथ काम कर रहा हूं और यह सुनिश्चित करने के लिए उत्सुक था कि socket.io के साथ वेब सर्वर सुरक्षित है। – j10

उत्तर

18

कोशिश बुला:

socket.disconnect('unauthorized'); 

या

socket.close(); 

संपादित करें: आप संदर्भित हेडर की जाँच करने में सक्षम हो सकता है। अधिक जानकारी के लिए Socket.io Security Issues पर देखें।

+3

socket.close() काम नहीं करता है, लेकिन socket.disconnect() किया था। THX, btw क्या आप जानते हैं कि socket.io के लिए पूर्ण प्रलेखन कहां है? – Derek

+0

विकी से परे कोई भी अच्छा विस्तृत दस्तावेज नहीं है (https://github.com/LearnBoost/socket.io/wiki देखें)। मेरे मामले में मैं socket.io स्रोत कोड खोलता हूं और उचित रूप से नामित फ़ंक्शंस (जैसे 'डिस्कनेक्ट' या' क्लोज़') की तलाश करता हूं)। – Femi

+0

क्या आप मेरे प्रश्न भाग 1 का उत्तर जानते हैं? – Derek

8

सर्वर की ओर एक socket.disconnect विधि है जो एक बुलियन अर्थ अंतर्निहित परिवहन कनेक्शन को बंद करता है। यहाँ जुलाई 2010 तक किए गए दस्तावेज़ों के साथ स्रोत कोड है:

/** 
* Disconnects this client. 
* 
* @param {Boolean} if `true`, closes the underlying connection 
* @return {Socket} self 
* @api public 
*/ 

Socket.prototype.disconnect = function(close){ 
    if (!this.connected) return this; 
    if (close) { 
    this.client.disconnect(); 
    } else { 
    this.packet({ type: parser.DISCONNECT }); 
    this.onclose('server namespace disconnect'); 
    } 
    return this; 
}; 

तो तुम socket.disconnect(true);

+2

इस के लिए उपरोक्त क्योंकि "अनधिकृत 'काम करते समय, यह काम करता है क्योंकि यह _truthy_ है; यह 'डिस्कनेक्ट' फ़ंक्शन का उपयोग करने का अधिक उचित तरीका है। – Shibumi

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