Обмен сообщениями между клиентами и клиентами C # - PullRequest
1 голос
/ 24 июня 2009

Сначала я попытаюсь объяснить, чего я хочу достичь.

Представьте, что два пользователя используют приложение форм Windows, когда пользователь А открывает конкретную форму, к записи данных, лежащей в основе формы, применяется блокировка, чтобы только этот пользователь мог вносить изменения в это время.

Пользователь B имеет список всех записей (в сетке), который, среди прочего, содержит ссылку на запись, уже открытую пользователем A. Что мы хотим сделать, это когда пользователь A открывает записи. Список записей пользователя B обновляется. чтобы показать значок замка рядом со строкой, чтобы указать, что запись используется.

Это тривиальный пример того, что мы делаем с обменом сообщениями, но вы понимаете, что пользователь A делает то, что должен знать пользователь B.

Я реализовал систему с использованием Jabber-net для C # и OpenFire Jabber Server. В основном, когда сообщение должно быть отправлено, новая строка вставляется в таблицу сообщений в базе данных. Таблица сообщений отслеживается клиентом службы с помощью объекта SqlDependancy, поэтому, когда новое сообщение готово, служба создает соответствующее сообщение и отправляет его нужному клиенту через Jabber и сервер OpenFire.

Это работает нормально, однако стандартная функциональность OpenFire для поддержки мгновенных сообщений, что, очевидно, не то, чего я пытаюсь достичь. У меня проблема в том, что, если пользователь вошел в два контекста приложения (т. Е. Test и Live), OpenFire не знает, в какой из них отправить сообщение, потому что структура JID user @ server / resource не обращает внимания на ресурс.

В основном то, как я сейчас использую OpenFire и Jabber-net, не совсем правильно.

Есть ли шаблон, который я могу использовать для достижения того, чего я хочу достичь, то есть отправить сообщение клиенту, сказав, что он что-то делает, при этом имея возможность указать, какому клиенту вы также отправляете сообщение. XMPP показался мне ответом, потому что я могу создавать собственные типы сообщений для анализа.

Мое приложение - это приложение Windows Forms, .NET 3.5 C #.

1 Ответ

0 голосов
/ 24 июня 2009

Я бы просто добавил еще несколько данных, чтобы указать, какой контекст приложения затронут, и пусть другие клиенты решат, обрабатывать ли они сообщение или нет.

...