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