7

ハブの外部でクライアントconnectionId/clientIdを取得するにはどうすればよいですか?..次のことを実行できました。

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();

しかし、そのコンテキストオブジェクトには、のようなものはありませんclientId

4

4 に答える 4

4

グローバルコンテキストに接続IDがあるのはなぜですか?どの接続を参照しますか?グローバルコンテキストを取得すると、サーバーからクライアントへの一方向チャネルにアクセスし、その上でメッセージを送信できます。ハブを呼び出していないため、ハブの接続IDにアクセスできません。それらを使用する必要がある場合は、アプリケーションのどこかに保存できます。

于 2012-06-08T16:58:52.083 に答える
4

ハブに 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());
    }
}
于 2012-05-23T12:59:32.330 に答える