मैं सिग्नल में एक गेम लिख रहा हूं। विचार यह है कि आप अपने लैपटॉप से कनेक्ट होते हैं, जिसका उपयोग "डिस्प्ले" के रूप में किया जाएगा और फिर आप अपने स्मार्ट फोन से कनेक्ट होंगे और इसका उपयोग "जॉयस्टिक" के रूप में किया जाएगा। पूरा सेटअप बहुत अच्छी तरह से काम करता है।सिग्नलआर: हब ऑन कनेक्ट नहीं किया गया है अगर कोई क्लाइंट विधियां
अब यह सब काम करता है, मैंने कोड को दोबारा करने का फैसला किया। मुझे एहसास हुआ कि जॉयस्टिक और डिस्प्ले के बीच का रिश्ता एक तरीका है (प्रदर्शन को जॉयस्टिक पर जानकारी भेजने की आवश्यकता नहीं है)। इसलिए मैंने तय कर लिया है कि मैं (जैसे जॉयस्टिक js में gameHub.client.joyStickMethod()
के लिए किसी काम का नहीं है जॉयस्टिक पर किसी भी signalR invokable ग्राहक कार्यों जरूरत नहीं थी।
यह तो मैं कुछ अजीब
की खोज की थी ऐसा लगता है कि हब विधि public override Task OnConnected()
कि मैं ग्राहकों (प्रदर्शित करता है और जॉयस्टिक) के विभिन्न प्रकार से निपटने के लिए ओवरराइड लागू नहीं है जब तक कि मैं एक myHub.client.clientSideMethod()
परिभाषित यहाँ उदाहरण मैं के साथ काम कर रहा हूँ है:।
var gameHub = $.connection.gameHub;
gameHub.client.connection();
$("#joystick").joystick({
hub: gameHub
});
gameHub.client.activateJoystick = function() { };
$.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
$.connection.hub.start(); //this will invoke on connected
आप खाली ग्राहक कि देखना साइड विधि? यही कारण है कि OnConnected
सर्वर पक्ष पर बुलाया जाता है। अगर मैं कोड की उस पंक्ति को हटा देता हूं, तो इसे नहीं कहा जाएगा।
var gameHub = $.connection.gameHub;
gameHub.client.connection();
$("#joystick").joystick({
hub: gameHub
});
//gameHub.client.activateJoystick = function() { };
$.connection.hub.qs = "type=joystick&gameId=" + "@Model.Id";
$.connection.hub.start(); //this will invoke on connected
यह काम नहीं करेगा, क्योंकि हब पर कोई क्लाइंट साइड विधि नहीं है। मैं शायद हब पर RegistrateJoystick
विधि जोड़ सकता हूं और उसे कॉल कर सकता हूं, लेकिन मुझे लगता है कि व्यवहार अप्रत्याशित है। मेरा सवाल इसलिए है:
क्या हब में मैन्युअल रूप से "कनेक्ट" करने का कोई तरीका है, ताकि OnConnect
विधि को कॉल किया जा सके?
आपके उत्तर के लिए धन्यवाद।मैं जो कह रहा हूं उसमें तर्क समझता हूं, लेकिन साथ ही, सर्वर साइड विधि "ऑनकनेक्ट" का नाम मुझे लगता है कि इससे कोई फर्क नहीं पड़ता कि आपके क्लाइंट के पास अनावश्यक तरीके हैं या नहीं। – pardahlman
निश्चित रूप से, लेकिन ऐसा नहीं है कि यह कैसे काम करता है। और विधि ऑनकनेक्टेड है। – davidfowl
सिर्फ पर्डहलमैन ने गूंजने के लिए कहा कि नामकरण के बाद थोड़ा सा अंतर्ज्ञानी कहता है, भ्रम से बचने के लिए दस्तावेज़ों में इसे स्पष्ट रूप से कॉल करने के लायक हो सकता है। –