1

モノの MVC3 で実行されている SignalR に問題があります。

次のハブを作成しました。

    public class TestHub : ハブ
    {
      public override Task OnConnected()
      {
        Trace.WriteLine(String.Format("参加グループ: {0}", Context.User.Identity.Name), "SignalR.General");
        タスク addTask = Groups.Add(Context.ConnectionId, Context.User.Identity.Name);
        addTask を返します。
      }

      public void JoinGroup(文字列グループ)
      {
        Trace.WriteLine(String.Format("Join Group2: {0}", Context.User.Identity.Name), "SignalR.General");
        Groups.Add(Context.ConnectionId, グループ);
      }

      public void Echo(文字列グループ、文字列値)
      {
        Trace.WriteLine(String.Format("Echo: {0}, {1}", グループ, 値), "SignalR.General");
        Clients.Group(グループ).echo(値);
      }
    }

主な問題は次のとおりです。

ユーザーはフォーム認証を介してサインインし、その名前は Context.User.Identity.Name で正しく検出されます。クライアントが接続すると、OnConnected が呼び出され、ユーザー名と同じ名前の単一のユーザー グループに接続が追加されます。グループ名をユーザー名にしてクライアントから Echo 関数を呼び出すと、IIS でホストしている場合は正しい応答が返されます (応答がクライアントに送信されます) 。 mono でホストしている場合は応答がありません

一方、最初にクライアントから JoinGroup を呼び出すと、モノの IIS と Apache で動作します。Clients.All へのメッセージの送信は、IIS と mono でも機能しますが、特定のユーザーにのみメッセージが届くようにする必要があります。

このコードのさまざまなバリエーションを試しましたが、グループ登録が OnConnected で機能しない理由がわかりません。

私はすでにこの問題で2日を無駄にしているので、どんなアイデアでも大歓迎です.

4

1 に答える 1