モノの 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日を無駄にしているので、どんなアイデアでも大歓迎です.