Tôi đã thử nghiệm với SignalR hôm nay và nó thực sự gọn gàng. Về cơ bản những gì tôi muốn đạt được là:SignalR - Gửi tin nhắn OnConnected
Ngay sau khi thiết bị kết nối nó sẽ gửi một tin nhắn cho người đầu tiên. Nếu có nhiều thiết bị hơn 1 kết nối, tôi muốn gửi hai tin nhắn. Một đến tất cả ngoại trừ khách hàng được kết nối cuối cùng. Và một thông báo đến chỉ khách hàng được kết nối mới nhất.
Mã tôi đã sử dụng hoạt động hoàn hảo khi tôi đặt nó trong bộ điều khiển API tùy chỉnh và về cơ bản gọi hành động, nhưng đó không phải là điều tôi muốn.
Tôi muốn gửi tin nhắn ngay khi thiết bị kết nối trong phạm vi OnConnected
mà không có bất kỳ tương tác người dùng nào, nhưng khi tôi đặt mã của mình bên trong ghi đè OnConnected
thì nó ngừng hoạt động. Nó không gửi đến các máy khách cụ thể nữa (lần đầu tiên được kết nối và kết nối lần cuối).
Tôi hy vọng một người nào đó có thể giúp tôi với điều này, bởi vì tôi đã đập đầu của tôi trong một vài giờ ngay bây giờ.
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();
}
thanks a lot cho mã này. Nó thực sự làm cho mã của tôi dễ dàng hơn rất nhiều! – Mittchel