1

最初に達成したいことを正確に説明しようとします。

2 人のユーザーが Windows フォーム アプリケーションを使用しているとします。ユーザー A が特定のフォームを開くと、フォームの基になるデータ レコードにロックが適用され、その時点でそのユーザーだけが変更できるようになります。

ユーザー B は、(グリッド内の) すべてのレコードのリストを持っています。これには、特にユーザー A が既に開いているレコードへの参照が含まれています。ユーザー A がレコードを開くと、ユーザー B のレコードのリストが更新され、行の横にあるロック アイコンをクリックして、レコードが使用中であることを示します。

これはメッセージングで行うことの些細な例ですが、ユーザー A がユーザー B が知る必要のあることを行っていることは理解できます。

Jabber-net for C# と OpenFire Jabber Server を使用してシステムを実装しました。基本的に、メッセージが送信されると、データベースのメッセージ テーブルに新しい行が挿入されます。メッセージ テーブルは、SqlDependancy オブジェクトを使用してサービス クライアントによって監視されるため、新しいメッセージの準備が整うと、サービスは関連するメッセージを作成し、Jabber および OpenFire サーバーを介して目的のクライアントに送信します。

これは問題なく動作しますが、OpenFire のすぐに使える機能はインスタント メッセージングをサポートするためのものであり、明らかに私が達成しようとしているものではありません。私が抱えている問題は、ユーザーが 2 つのアプリケーション コンテキスト (テストとライブ) にログインしている場合、user@server/resource の JID 構造がリソースを認識しないため、OpenFire はどちらにメッセージを送信するかを認識できないことです。

基本的に、私が現在 OpenFire と Jabber-net を使用している方法は、まったく正しくありません。

私が達成したいことを達成するために使用できるパターンはありますか。つまり、メッセージを送信しているクライアントを指定しながら、何かをするようにクライアントにメッセージを送信します。XMPP は、解析する独自のメッセージ タイプを構築できるため、答えのように思えました。

私のアプリケーションは、Windows フォーム、.NET 3.5 C# アプリケーションです。

4

1 に答える 1

0

どのアプリケーション コンテキストが影響を受けるかを示すデータを追加し、メッセージを処理する必要があるかどうかを他のクライアントに判断させるだけです。

于 2009-06-24T11:49:21.850 に答える