2012-07-29 12 views
6

Socket.io के उदाहरण पर ("संदेश") संचालकों Socket.io परिभाषित करने के लिए जिस तरह से यह सब पैटर्न का पालनसबसे कुशल

io.sockets.on("connection", function(mySocket){ 
    mySocket.on("my message", function(myData){ 
     ... 
    }); 
}); 

मुझे ऐसा लगता है कि यह हर कनेक्शन के लिए एक नया कॉलबैक फ़ंक्शन पैदा करेगा।

function myMessageHandler(data){ 
    ... 
} 

io.sockets.on("connection", function(mySocket){ 
    mySocket.on("my message", myMessageHandler); 
}); 

या यहाँ तक कि इस:

io.sockets.on("my message", function(mySocket, myData){ 
    ... 
}); 

यह मानते हुए कि हर सॉकेट एक ही तरीके से संदेश का जवाब है, इसे और अधिक स्मृति इस तरह सभी सॉकेट के लिए एक बार हैंडलर परिभाषित करने के लिए कुशल नहीं होगा यदि हां, तो सॉकेट.ओ एक ऐसे अभ्यास की सिफारिश क्यों करेगा जो स्मृति को बर्बाद कर दे? क्या हम "कनेक्शन" कॉलबैक के बंद होने के अंदर सॉकेट के लिए स्टेटस वैरिएबल रखना चाहते हैं?

+2

आप "अनावश्यक अनुकूलन" के रूप में जाने वाली चिंता के उस अनावश्यक रूप में शामिल हैं। यदि ओवरहेड में अंतर आपको एप्लिकेशन बनाता है या तोड़ता है, तो node.js प्लेटफॉर्म की गलत पसंद है। – ebohlman

+0

मेरा आवेदन तर्क दर्जनों सॉकेट संदेशों पर किया जाता है, और हजारों एक साथ कनेक्शन प्रदान करता है। यदि प्रत्येक कनेक्शन कॉलबैक की हजारों लाइनों को डुप्लिकेट करता है, तो यह मेरे लिए एक बड़ी अनुकूलन निगरानी प्रतीत होता है – arkanciscan

उत्तर

0

इसे किसी अन्य परिप्रेक्ष्य से देखते हुए, पहला फॉर्म पढ़ने में आसान है (क्योंकि बहुत से विवरण छोड़े गए हैं)। मुझे लगता है कि यह फॉर्म सबसे अच्छा दिखाता है कि पुस्तकालय कैसे काम करता है। इसी तरह की शैली के लिए नोड वेबसाइट पर इसी तरह की शैली का उपयोग किया जाता है, मुझे विश्वास है। और मुझे लगता है कि यही कारण है कि उन स्थानों पर इसका उपयोग क्यों किया जाता है।

कुछ मिनट पढ़ने के बाद ब्लॉग और चर्चाएं बताती हैं कि डेवलपर्स आम तौर पर नामित कार्यों के आसपास गुजरने का विकल्प चुनते हैं। हालांकि मुझे यकीन है कि इसमें प्रदर्शन लाभ है, प्राथमिक प्रेरणा में कोई संदेह नहीं है। मुझे लगता है कि आपके काम बढ़ने के साथ-साथ काम करने में आसान होने के लिए आपको दूसरा फॉर्म (या अधिक खींचा गया फॉर्म) मिल जाएगा।

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