Поэтому я изо всех сил пытался найти достойную библиотеку C # для использования с XMPP, которая поддерживает шифрование SSL или TSL между клиентами и сервером. Я надеюсь, что кто-то может порекомендовать мне библиотеку, которая отвечает некоторым моим потребностям и довольно хорошо поддерживается/документирована. Также, возможно, кто-то может подтвердить мои подозрения относительно некоторых библиотек, которые я уже пробовал.
Моя первая попытка использовала Soapbox Studio SDK. Найти здесь от Conversant, однако, насколько я могу судить, они поддерживают только аутентификацию SASL. Я попытался связаться с ними, но не получил ответа, и форум, похоже, не работал, так как я не мог разместить свой вопрос на их форуме. Возможно, я ошибаюсь в своем предположении о SSL с библиотекой Soapbox, и было бы здорово, если бы кто-нибудь меня поправил, потому что это библиотека, которую я бы предпочел использовать.
Затем я перешел к Matrix, который является преемником agXmpp. После нескольких дней троллинга на их досках объявлений и изучения их примеров приложений я не могу даже создать групповой чат на своем сервере openfire. Почти все связанные вопросы, размещенные на форуме ag Software, побуждают людей использовать образцы приложений для ответа на свои вопросы. вопросы. Однако, если я что-то не понимаю, многие из их примеров приложений кажутся устаревшими или не подходящими для моих нужд. Следующий код является примером моей попытки использовать их библиотеки для создания группового чата. Если кто-то использовал их библиотеку, возможно, они могут указать, что я делаю неправильно.
Это мои директивы использования
using System;
using Matrix.Xmpp.Disco;
using Matrix.Xmpp.Client;
using Matrix.Xmpp.Session;
using Matrix.Xmpp;
using Matrix;
Вот код, который подключается к клиенту Xmpp
readonly XmppClient _xmppClient = new XmppClient();
public string Connect() {
try
{
_xmppClient.SetUsername(OPENFIRE_USER_NAME);
_xmppClient.Password = OPENFIRE_PASSWORD;
_xmppClient.SetXmppDomain(OPENFIRE_SERVER);
_xmppClient.Show = Matrix.Xmpp.Show.chat;
_xmppClient.AutoRoster = true;
_xmppClient.Open();
return "Connection Succesful";
}
catch (Exception ex)
{
_logger.LogError("SessionManager", "Connect", "Could not connect to Openfire Server", ex.ToString());
return "Could not Connect to Openfire Server";
}
}
и это код, который должен создать новый чат
public string CreateRoom(string roomName, string serverName, string userName)
{
Jid groupJid = new Jid(userName, serverName, "gec2o");
using (MucManager mucManager = new MucManager(_xmppClient))
{
mucManager.EnterRoom(groupJid, roomName, true);
mucManager.RequestInstantRoom(groupJid);
}
return "";
}
Однако на сервере не создается чат и не генерируется никаких исключений. Также я знаю, что могу использовать их библиотеку для подключения к моему серверу, потому что я вижу, что мое имя для входа появляется в списке пользователей openfire. Несмотря на то, что все их классы задокументированы в файле, библиотека практически не дает комментариев о том, что на самом деле делает каждый класс/метод и как его следует использовать. Опять же, там форум в основном советует людям посмотреть пример кода, который в значительной степени бесполезен, и, как и мыльница, эта библиотека, похоже, не так хорошо поддерживается (похоже, что один разработчик отвечает на один вопрос).
Я кратко изучил другие библиотеки, такие как jabber-net, но оказалось, что это то же самое. история как Soapbox и Matrix с точки зрения поддержки и документации.
Я также наткнулся на IP*Works Internet Toolkit, но стоимость этой библиотеки кажется несколько завышенной.
Я понимаю, что сделал много предположений в этом вопросе, но я исследовал его уже несколько дней, и это лучшие выводы, к которым я смог прийти. Я надеюсь, что кто-то может либо исправить мои предположения, либо порекомендовать библиотеку, в которой нет проблем, с которыми я столкнулся.