मैं आज सिग्नल के साथ प्रयोग कर रहा हूं और यह वास्तव में साफ है। असल में जो मैं प्राप्त करना चाहता था वह निम्नलिखित है:सिग्नलआर - संदेश भेजें ऑनकनेक्टेड
जैसे ही कोई डिवाइस कनेक्ट होता है, उसे पहले संदेश को भेजना चाहिए। यदि 1 कनेक्टेड से अधिक डिवाइस हैं तो मैं दो संदेश भेजना चाहता हूं। अंतिम कनेक्ट क्लाइंट को छोड़कर सभी पर एक। और एक संदेश केवल अंतिम कनेक्ट क्लाइंट के लिए एक संदेश।
मैं जिस कोड का उपयोग कर रहा हूं वह सही काम करता है जब मैं इसे कस्टम एपीआई नियंत्रक में रखता हूं और मूल रूप से कार्रवाई को कॉल करता हूं, लेकिन यह वही नहीं है जो मैं चाहता हूं।
मैं जैसे ही एक युक्ति किसी भी उपयोगकर्ता सहभागिता के बिना OnConnected
भीतर जोड़ता है संदेश भेजने के लिए चाहते हैं, लेकिन जब मैं OnConnected
ओवरराइड अंदर मेरे कोड जगह यह काम करना बंद। यह अब विशिष्ट ग्राहकों को नहीं भेजता है (पहले कनेक्ट और आखिरी जुड़ा हुआ)।
मुझे उम्मीद है कि कोई मेरी मदद करने में सक्षम है, क्योंकि मैं अब कुछ घंटों के लिए अपने सिर पर टक्कर लगी हूं।
public override System.Threading.Tasks.Task OnConnected()
{
UserHandler.ConnectedIds.Add(Context.ConnectionId, UserHandler.ConnectedIds.Count + 1);
int amountOfConnections = UserHandler.ConnectedIds.Count;
var lastConnection = UserHandler.ConnectedIds.OrderBy(x => x.Value).LastOrDefault();
var allExceptLast = UserHandler.ConnectedIds.Take(amountOfConnections - 1).Select(x => x.Key).ToList();
if (amountOfConnections == 1)
{
Clients.Client(UserHandler.ConnectedIds.First().Key).hello("Send to only(also first) one");
}
else
{
Clients.Clients(allExceptLast).hello("Send to everyone except last");
Clients.Client(lastConnection.Key).hello("Send to only the last one");
}
return base.OnConnected();
}
धन्यवाद इस कोड के लिए बहुत कुछ। यह वास्तव में मेरे कोड को बहुत आसान बनाता है! – Mittchel