2

以前は、次のコードを使用して独自の接続 ID ジェネレーターを実装していました。

public class MyConnectionFactory : IConnectionIdGenerator
{
    public string GenerateConnectionId(IRequest request)
    {
        return MyUserManager.Instance.CurrentUserID.ToString();
    }
}

これは SignalR 0.5.3 リリースでは問題なく動作していましたが、SignalR 1.0rc2 リリースに更新した後、名前空間またはクラス名が見つかりません。また、この重大な変更に関するメモをここで見つけることができませんhttps://github.com/SignalR/SignalR/blob/master/ReleaseNotes.mdこの問題を解決するのを手伝ってもらえますか?

4

1 に答える 1

5

これは実際になくなっており、ユーザー/接続マッピングを手動で行うことになっているため、直接の置き換えはありません。

HubPipelineModule を使用して解決し、そのユーザーのすべての接続に対してグループを設定しました。

public class AuthenticationHubPipelineModule : HubPipelineModule
{
    protected override bool OnBeforeIncoming(IHubIncomingInvokerContext context)
    {
        var id = MyUserManager.Instance.CurrentUserID.ToString();

        context.Hub.Groups.Add(context.Hub.Context.ConnectionId, id);

        return base.OnBeforeIncoming(context);
    }
}

ユーザーに連絡したい場合は、次のようにそのグループに送信できます。

var context = GlobalHost.ConnectionManager.GetHubContext<YourHub>();
context.Clients.Group(userId).yourCallbackMethod();

これが役に立てば幸いです、イヴ

于 2013-02-06T09:03:54.317 に答える