हबप्रिलीन के बाहर सिग्नलआर हब उदाहरण का उपयोग कैसे करें


81

मैं अपने सभी ग्राहकों को संदेश प्रसारित करने के लिए सिग्नलआर का उपयोग कर रहा हूं। मुझे अपने हब वर्ग के बाहर प्रसारण को ट्रिगर करने की आवश्यकता है अर्थात नीचे जैसा कुछ:

var broadcast = new chatHub(); broadcast.Send("Admin","stop the chat");

मुझे इस तरह से त्रुटि संदेश मिल रहा है:

हब उदाहरण का उपयोग करके हबपिपलीन द्वारा नहीं बनाया गया है असमर्थित।

जवाबों:


140

आपको उपयोग करने की आवश्यकता है GetHubContext:

var context = GlobalHost.ConnectionManager.GetHubContext<chatHub>();
context.Clients.All.Send("Admin", "stop the chat");

यह http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-server#callfromoutsidehub पर अधिक विस्तार से वर्णित है ।


4
"Reference.Clients.All.Send" केवल दूसरों को कॉलर को वापस प्रसारित नहीं करता है। कोई विचार?
user384080

4
यदि आप उपयोग कर रहे हैं तो GetHubContextकोई कॉलर नहीं है क्योंकि इसका उपयोग हब के बाहर किया जाना है। Clients.Allवर्तमान में हब से जुड़े हर ग्राहक को संबोधित करना चाहिए।
हाल्टर .३

5
मेरे पास समान कोड है, लेकिन विधि भेजें या किसी अन्य विधि को नहीं कहा जाएगा।
nAviD

5
यह आपको हब का उदाहरण नहीं देता है, यह आपको एक उदाहरण देता है IHubContext। आप हब विधियों को कॉल करने के लिए इसका उपयोग नहीं कर सकते।
जॉर्ज माउर

4
इसने मेरे लिए वन चेंज के साथ काम किया: context.Clients.All.broadcastMessage("Admin", "stop the chat"); Send के बजाय प्रसारण प्रसारण का उपयोग करें।
व्हील बिल्डर

4

उन लोगों के लिए एक छोटा सा अपडेट, जो सोच रहे होंगे कि कहां GlobalHostगया है। सिग्नल कोर .net कोर के लिए पूरी तरह से फिर से लिखा गया है। इसलिए यदि आप सिग्नलआर.कोर पैकेज ( सिग्नलआर संस्करण के बीच अंतर ) का उपयोग कर रहे हैं , तो आपको सिग्नलआर हब संदर्भ का एक उदाहरण इसे अपनी सेवा में इंजेक्ट करके मिलता है:

public class MyNeedyService
{
    private readonly IHubContext<MyHub> ctx;

    public MyNeedyService(IHubContext<MyHub> ctx)
    {
        this.ctx = ctx;
    }

    public async Task MyMethod()
    {
        await this.ctx.All.SendAsync("clientCall");
    }
}

और में Startup.cs:

services.AddSignalR()/*.AddAzureSignalR("...")*/;

Microsoft दान यहां है: हब के बाहर से सिग्नलआर संदेश भेजें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.