1

SignalR を使用してチャット アプリケーションを作成しようとしています。プライベート メッセージを送信できるようにするために、プロファイル ID の名前を持つグループにクライアントを割り当てたいと考えています。したがって、グループの addMessage 関数を呼び出すだけで、特定のクライアントに送信できます。

このページにアクセスすると: https://github.com/SignalR/SignalR/wiki/Hubs

Join() という関数を Hub に追加するように指示されます。ここで、着信クライアントをグループに追加できます。だから私はこのコードを作成しました:

    [HubName("Chat")]
    public class ChatHub : Hub
    {
            public Task Join()
            {
                    if (HttpContext.Current.User.Identity.IsAuthenticated)
                    {
                            Profiel_DataHelper profiel = new Profiel_DataHelper(HttpContext.Current.User.Identity.Name);
                            return Groups.Add(Context.ConnectionId, profiel.ProfielID.ToString());
                    }
                    else
                    {
                            return null;
                    }
            }

.....

特定のクライアントを呼び出したいときは、次のコードを使用します。

    var context = GlobalHost.ConnectionManager.GetHubContext();
    context.Clients.Group(profielidNaar).addTyptOnline(profielidVan);

しかし、プログラムを実行すると、 Join() タスクがまったく呼び出されないため、グループへの呼び出しも機能しません。

私は何を間違っていますか?

4

1 に答える 1

1

Join は、クライアントから呼び出す必要があるハブのメソッドです。誰もあなたのためにそれを呼び出すつもりはなく、「結合」は自動的に呼び出される特別なメソッドではありません。ドキュメントは、クライアントから呼び出すことができるメソッドを宣言する方法を示しています。

クライアントがいつ接続、再接続、切断したかを知る方法は他にもあります。詳細は次のとおりです: https://github.com/SignalR/SignalR/wiki/Hubs#detecting-connect-reconnect-and-disconnect-clients-in-hubs

于 2013-04-11T09:54:46.927 に答える