2

SignalR の実験を開始しました。私は、接続された各クライアントに関する情報を柔軟に保存する方法を考え出そうとしています。たとえば、各メッセージで名前を渡すのではなく、チャット アプリに名前を保存します。

現時点では、connectionId をこれらのプロパティを含むオブジェクトに一致させる静的辞書があります。接続時にこの辞書に追加し、切断時に削除します。

私が抱えている問題は、すべての切断イベントを取得していないように見えることです。Chrome でタブを閉じると、切断されたように見えます。ただし、タブをすばやくリロードすると、切断は発生しないようです (少なくとも「きれいに」ではありません)。たとえば、同じタブを何度もリロードすると、辞書に複数の項目があるはずですが、理論上はまだ 1 つであることを教えてくれます。

この種の接続ごとの情報を保存する標準的な方法はありますか? それ以外の場合、私が抱えている問題の原因は何ですか?

4

1 に答える 1

1

実際に接続 ID データを正しく処理しています。OnConnected でのみユーザー データをインスタンス化し、OnDisconnected でインスタンス化を解除していることを確認してください。

ページでスパムの更新を行うと、OnDisconnected イベントがすぐにトリガーされないという状況が発生します。ただし、SignalR は実際に接続をタイムアウトし、指定されたタイムアウト (DisconnectTimeout) の後に OnDisconnected イベントをトリガーするため、これについて心配する必要はありません。

OnConnected イベントと OnDisconnected イベントに 1 対 1 の相関関係がないシナリオに遭遇した場合 (かなりの時間が経過した後)、https://github.com/SignalR/SignalR/issuesでバグを報告してください。 .

最後に、高度なチャット メカニクスの実行を検討していて、インスピレーションを求めている場合は、オープン ソースのJabbRをチェックしてください。

https://github.com/davidfowl/JabbR

お役に立てれば!

于 2013-02-25T18:28:14.397 に答える