2016-10-19 5 views
0

私は最近、SignalRについて学び、状態のリポジトリがSQLデータベースである永続オンライン接続チェックを実装しました。 ユーザーがオンライン/オフラインのときは正しく検出されます。この問題は、ユーザーがオンラインでHome/Index.cshtmlをブラウズしてからHome/Edit.cshtmlに移動したときに発生し、OnDisconnectedが起動して新しい接続が作成されるときに発生します。私は接続を開いたままにしたい場合はどのように?私は_Layout.cshtmlにハブ接続を配置しましたが、明らかに、これは新しいページが閲覧されるときに再ロードされます。 Startup.csSignalR OnReconnect新しいページが閲覧されました

GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromSeconds(110); 

GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(45); 

GlobalHost.Configuration.KeepAlive = TimeSpan.FromSeconds(15); 

を右app.MapSignalR();前: 私は増加しようとしました。うまくいきませんでした。

このように、私がチャットAPIを維持したいのであれば、ユーザーはオフライン/オンラインで一時的に表示されます。私はこれを防ぐつもりです。

答えて

0

OnReconnected()メソッドを実装して、ユーザーをオンラインにしてください。

public override Task OnReconnected() 
{ 
    string name = Context.User.Identity.Name; 

    if (!_connections.GetConnections(name).Contains(Context.ConnectionId)) 
    { 
     _connections.Add(name, Context.ConnectionId); 
    } 

    return base.OnReconnected(); 
} 

完全な例here

0

この場合、マスターページ(mvcの場合はレイアウトページ)を作成し、マスターページでユーザーをsignalrサーバーに接続します。したがって、ユーザーが他のページにリダイレクトすると、シグナルサーバーに接続されます。

関連する問題