विकास के दौरान, यह मुझे देखने में सक्षम होने में मदद करता है कि कौन से पैकेट आते हैं और भेजे जाते हैं। लॉगजर के साथ सर्वर पक्ष पर यह संभव है। ग्राहक अंत में, हालांकि, कोई लॉगर नहीं है। मैं खुद को जगह पर कंसोल.लॉग कूल्हे करने के लिए पाता हूं।socket.io के उत्सर्जन को ओवरराइड करना और चालू करना?
क्या console.log (arguments) के साथ socket.emit और socket.on को ओवरराइड करना संभव है? अगर मैं इसे अपने सॉकेट से पहले ओवरराइड कर सकता हूं, तो यह वास्तव में सुरुचिपूर्ण होगा।
किसी ने मुझे सलाह दी कि इसके बजाय पार्सर को ओवरराइड करें।
इस पर आपके 2 सेंट क्या हैं?
संपादित
मैं काटो के सुझाव की कोशिश की और लिखा है:
var _origEmit = socket.emit;
socket.emit = function() {
console.log("SENT", Array.prototype.slice.call(arguments));
_origEmit.call(socket, arguments);
};
यह काम करता है। हालांकि, सॉकेट.ऑन के साथ इतना नहीं। मेरी रणनीति है प्रत्येक कॉलबैक को console.log से लपेटना। यदि आप पाइथन जानते हैं, तो यह कॉलबैक पर फ़ंक्शन सजावट डालने जैसा है जो कंसोल.लॉग तर्कों को लॉग करता है।
(function(socket) {
var _origOn = socket.on;
socket.on = function() {
var args = Array.prototype.slice.call(arguments)
, handlerType = args[0]
, originalCallback = args[1];
var wrappedCallback = function() {
// replace original callback with a function
// wrapped around by console.log
console.log("RECEIVED", Array.prototype.slice.call(arguments));
originalCallback.call(socket, arguments);
}
_origOn.call(socket, [handlerType, wrappedCallback]);
}
कोई भी इंगित कर सकता है कि बंदर पैचिंग सॉकेट.ऑन क्यों काम नहीं कर रहा है?
बहुत बहुत धन्यवाद। यह बहुत अच्छी तरह से काम किया। – disappearedng
मुझे खेद है कि इसके लिए केवल 1 अपवोट है। –
शानदार, धन्यवाद – carpii