ハブの外部でクライアントconnectionId/clientIdを取得するにはどうすればよいですか?..次のことを実行できました。
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
しかし、そのコンテキストオブジェクトには、のようなものはありませんclientId
。
ハブの外部でクライアントconnectionId/clientIdを取得するにはどうすればよいですか?..次のことを実行できました。
var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
しかし、そのコンテキストオブジェクトには、のようなものはありませんclientId
。
グローバルコンテキストに接続IDがあるのはなぜですか?どの接続を参照しますか?グローバルコンテキストを取得すると、サーバーからクライアントへの一方向チャネルにアクセスし、その上でメッセージを送信できます。ハブを呼び出していないため、ハブの接続IDにアクセスできません。それらを使用する必要がある場合は、アプリケーションのどこかに保存できます。
ハブに IConnected/IDisconnect を実装し、データベースなどでクライアントを手動で追跡し、必要に応じてリストを引き戻すことができます。以下の例は、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());
}
}