我一直在寻找一个可靠的C#库,用于XMPP客户端和服务器之间的SSL或TSL加密。希望有人能推荐一个满足我的需求并且有良好支持和文档的库。同时,也希望有人能够确认我对已经尝试过的库的猜测是否正确。
我的第一个尝试是使用Soapbox Studio SDK。可以从Conversant这里找到,然而据我所知,他们只支持SASL身份验证。我试图联系他们,但没有得到回应,他们的论坛似乎也无法工作,因为我无法在其论坛上发布我的问题。如果有人能纠正我关于Soapbox库的SSL假设,那将是太好了,因为那是我想要使用的库。
我接下来转向Matrix,它是agXmpp的后继者。在浏览他们的消息板和样例应用程序几天后,我甚至不能在我的openfire服务器上创建一个群聊。几乎所有相关问题发布在ag Software forum,并引导人们使用他们的样例应用程序来回答问题。然而,除非我误解了什么,他们的许多样例应用程序似乎已经过时或不适合我的需求。以下代码是我尝试使用他们的库创建群聊的示例。如果有人使用过他们的库,也许他们可以指出我哪里做错了。这些是我的使用指令。
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的用户列表中。虽然他们在文件中记录了所有类的文档,但该库几乎没有对每个类/方法实际执行的操作以及如何使用它的注释。同样,他们的论坛大多告诉人们查看示例代码,这在很大程度上是没有帮助的,就像soapbox一样,这个库似乎也没有得到很好的支持(看起来只有一个开发者回答每一个问题)。
我简要地研究了其他库,例如jabber-net,但在支持和文档方面与Soapbox和Matrix相同。
我还发现IP * Works Internet Toolkit,但该库似乎有些成本限制。
我意识到在这个问题中我做了很多假设,但是我已经研究了几天,这是我能得出的最好结论。我希望有人能够纠正我的假设或推荐一个不会出现我一直面临的问题的库。