2012-01-25 14 views
10

मैं एक ही हैंडलर में ग्राहकों से आने वाले सभी संदेशों को संभालने में सक्षम होना चाहता हूं।सॉकेट.io: मैं सर्वर पर सभी आने वाले संदेशों को कैसे संभाल सकता हूं?

उदाहरण क्लाइंट कोड:

var socket = io.connect('http://localhost'); 
socket.emit('news', { hello: 'test' }); 
socket.emit('chat', { hello: 'test' }); 

उदाहरण सर्वर कोड:

io.sockets.on('connection', function (socket) { 
socket.on('message', function (data) { 
    console.log(data); 
}); }); 

मैं खबर पर भले ही उसके लिए भेजा जाने वाले प्रत्येक संदेश लॉग इन कर सकेंगे करना चाहते हैं, चैट या कोई अन्य नाम का उपयोग फेंकना। क्या यह संभव है?

नोट: उपर्युक्त सर्वर कोड काम नहीं करता है। वर्तमान में लॉग इन कुछ भी नहीं है। मैं बस सोच रहा हूं कि एक ऐसी घटना है जिसे प्रत्येक उत्सर्जन नाम के लिए सभी संदेशों के लिए संभाला जा सकता है।

+0

हो सकता है कि इस => http://stackoverflow.com/a/7491506/11926? – Alfred

+0

यहां समाधान के लिए देखें: http://stackoverflow.com/a/9674248/362536 – Brad

उत्तर

1

यह सॉकेट.आईओ के साथ open issue है।

इस समय, यदि आपको वास्तव में इसकी आवश्यकता है, तो आपको शायद सॉकेट.आईओ को फोर्क करना होगा। इसे कैसे करें के लिए 3rd-Edens comment देखें।

+1

अच्छा, यह निश्चित रूप से वह उत्तर नहीं है जिसका मैं उम्मीद कर रहा था। – Joshua

+0

मुझे न तो, लेकिन यह वर्तमान स्थिति है। दूसरी ओर, तृतीय-Edens टिप्पणी में परिवर्तन केवल 3-5 लाइनें हैं और इसे लागू करने के लिए पर्याप्त आसान होना चाहिए। – mtsr

6

कि सॉकेट अधिभावी द्वारा संभव है। $ फेंकना समारोह

//Original func 
var x = socket.$emit; 

socket.$emit = function(){ 
    var event = arguments[0]; 
    var feed = arguments[1]; 

    //Log 
    console.log(event + ":" + feed); 

    //To pass listener 
    x.apply(this, Array.prototype.slice.call(arguments));  
}; 
+0

क्या यह आने वाले संदेशों पर काम करता है, क्योंकि फ़ंक्शन नाम से यह सुझाव देता है कि यह आउटगोइंग संदेशों के लिए एक फ़ंक्शन है? – mtsr

+0

यह क्लाइंट साइड पर ठीक काम करता है, लेकिन सर्वर की तरफ कोई परीक्षण नहीं –

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