2
コントローラメソッドで、キックする必要があるuserName
を受け取ります。ハブクラスの外部からHubメソッドが機能しない
public ActionResult Kick(string userName)
{
var hub = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
var user = userService.GetUserByName(userName);
hub.Clients.Client(user.ConnectionIdInHub).kickUser();
return Json(new { success = true});
}
kickUser()
- これはJSメソッドです。しかし、コントローラメソッドKick()
からkickUser()
が実行されているときは、クライアント側で何も起こりません。
chatHub.client.kickUser = function() {
window.location.replace(window.kickUserActionUrl);
}
この問題を解決するにはどうすればよいですか?
は、私はこれを実行しようとしました:
public static void OnKicked(string connectionId)
{
var hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
hubContext.Clients.Client(connectionId).closeConnection();
}
ここで解決する別の方法です私はこのChatHub.OnKicked(user.ConnectionIdInHub);
のようなハブメソッドを呼び出しますが、それはまだ
を動作しません:
は、私はクライアント側でsetInterval()
メソッドを呼び出しています。これは10秒ごとにサーバー要求に送信されます。サーバー上でこのリクエストを受け取ることによってJSonメソッドがチェックされています。現在のユーザーはIsKicked=true
です。この場合、JSonはnew {success=true}
を返信し、そこでユーザーはキックページに再接続されます。
クライアント側でどのようなSignalRスクリプトを使用しましたか?生成されたプロキシと必要なサポートスクリプトが含まれていることを確認したいだけです。 –
@RobReagan これはどういう意味ですか? ' –
これはまさに正しいものです。ありがとう。 –