2012-10-23 21 views
16

के बाद मैन्युअल रीकनेक्ट मैं रीयल टाइम वेब एप्लिकेशन बनाने के लिए node.js और socket.io का उपयोग करता हूं। मैं उपयोगकर्ताओं को सॉकेट कनेक्शन का पूर्ण नियंत्रण दूंगा, जैसे मैन्युअल डिस्कनेक्ट और (पुनः) कनेक्ट।सॉकेट.ओओ - क्लाइंट-साइड डिस्कनेक्ट

function socket_connect() 
{ 
    console.log('func socket_connect'); 
    socket = io.connect('http://url/to/the/app'); 
} 

function socket_reconnect() 
{ 
    console.log('func socket_reconnect'); 
    socket_connect(); 
} 

function socket_disconnect() 
{ 
    console.log('func socket_disconnect'); 
    if (socket) socket.disconnect(); 
} 

ग्राहक पर socket_connect() समारोह शुरू ठीक काम करता है, लेकिन socket.disconnect() उपयोग करने के बाद, कोई नया कनेक्शन शुरू होता है।

+1

"कोई नया कनेक्शन शुरू होने" के साथ आपका क्या मतलब है? यह स्वचालित रूप से फिर से कनेक्ट नहीं होता है, या जब उपयोगकर्ता सॉकेट_कनेक्ट() का चयन करता है तो नया कनेक्शन काम नहीं करता है। – Martin

+0

ऑटो-रीकनेक्ट ठीक काम करता है, यह समस्या नहीं है। मेरा जवाब देखें ... समस्या हल हो गई। – acc

उत्तर

15

यह() socket.socket.reconnect साथ, अब काम करता है

function socket_connect() 
{ 
    console.log('func socket_connect'); 
    socket = io.connect('http://url/to/the/app'); 
} 

function socket_reconnect() 
{ 
    console.log('func socket_reconnect'); 
    socket.socket.reconnect(); 
} 

function socket_disconnect() 
{ 
    console.log('func socket_disconnect'); 
    if (socket) socket.disconnect(); 
} 

संबंधित: https://github.com/LearnBoost/socket.io-client/issues/251

16

आप Socket.io 1.0 उपयोग कर रहे हैं, को संभालने के लिए सॉकेट पर io प्रबंधक का उपयोग करके देखें मैनुअल डिस्कनेक्शन और पुन: कनेक्शन।

// Connect to socket.io 
var socket = io.connect('url'); 

function manual_disconnect() { 
    socket.io.disconnect(); 
} 

function manual_reconnect() { 
    socket.io.reconnect(); 
} 

reconnecting_attempt है, पुनः, सॉकेट पर पुन: कनेक्ट और जुड़े घटनाओं सब बाद में उत्सर्जित किया जाना चाहिए।

+2

परेशान रूप से, socket.disconnect() अभी भी 1.x में उपलब्ध है जबकि socket.reconnect() नहीं है। इसलिए kmftzg का संस्करण शायद सबसे अच्छा है –

16

आप क्लाइंट साइड कॉन्फ़िगरेशन का पालन करके पुनः कनेक्ट कर सकते हैं।

// for socket.io version 1.0 
io.connect(SERVER_IP,{'forceNew':true }); 
संबंधित मुद्दे