Bạn có thể triển khai IConnected/IDisconnect trên Hub và theo dõi khách hàng theo cách thủ công ví dụ trong cơ sở dữ liệu, sau đó kéo lại danh sách khi cần. Ví dụ bên dưới là từ số SignalR Wiki
public class Status : Hub, IDisconnect, IConnected
{
public Task Disconnect()
{
return Clients.leave(Context.ConnectionId, DateTime.Now.ToString());
}
public Task Connect()
{
return Clients.joined(Context.ConnectionId, DateTime.Now.ToString());
}
public Task Reconnect(IEnumerable<string> groups)
{
return Clients.rejoined(Context.ConnectionId, DateTime.Now.ToString());
}
}
Không phải ai cũng xây dựng máy chủ trò chuyện. Tôi nghĩ rằng ngụ ý là làm thế nào để có được ConnectionId được sử dụng bởi các khách hàng hiện tại để một tin nhắn có thể được gửi đến chỉ người dùng/phiên. Tôi tự hỏi làm thế nào để làm điều này tốt nhất trong một hành động MVC từ một khách hàng mà tôi muốn gửi tin nhắn tiến bộ. Có một số kỹ thuật cho bộ nhớ đệm ConnectionIds bởi tên người dùng nhưng tôi đã không nhìn thấy bất cứ điều gì phong nha cho phép cho cùng một người dùng có nhiều kết nối mà thường là trường hợp với các ứng dụng web. Ý tưởng cho điều đó? Cảm ơn. – Dave
Bạn gửi nó từ khách hàng đến hành động mvc của bạn. Nó có sẵn trên máy khách thông qua $ .connection.hub.id. – davidfowl