我在尝试将XMPP消息发送到我们的OpenFire实例中的“房间”时遇到问题。最终结果是我们的CruiseControl.NET构建服务器能够将成功/失败消息发送到适当的“房间”,作为一种附加的通知方式。

我正在使用Matrix XMPP库使用VS2010在C#中创建控制台应用程序。这个想法是创建一个简单的.exe,我可以将其连接到CCNet并根据需要将一些参数传递给它。

下面的代码基本上是Matrix站点/文档中的示例代码,我已对其进行更新以指向一个房间。

static void Main(string[] args)
{
    var xmppClient = new XmppClient
    {
        XmppDomain = "SERVER",
        Username = "davidc",
        Password = "*********"
    };

    xmppClient.OnRosterEnd += delegate
    {
        xmppClient.Send(new Message
        {
            To = "roomname@conference.SERVER",
            From = "davidc@SERVER",
            Type = MessageType.groupchat,
            Body = "Just Testing the XMPP SDK"
        });
    };
    xmppClient.Open();

    Console.WriteLine("Press return key to exit the application");
    Console.ReadLine();

    xmppClient.Close();
}


我可以发送给单个用户(相应地更改“收件人”和“类型”),但没有任何问题,但是更改代码以指向某个房间的操作将以静默方式结束!是否需要进行其他“握手”操作以解决房间问题?

只要解决方案可以在Windows Server上运行,我就不必为解决方案使用C#。

最佳答案

您将要阅读XEP-0045,“多用户聊天”。您需要先进入会议室,然后再向其发送消息。有关快速修复的信息,请参见第7.1.1节,其中显示了如何使用简化(较旧)协议加入会议室:

<presence
    to='darkcave@chat.shakespeare.lit/thirdwitch'/>


对于较新的协议,请在第7.1.2节中添加一个额外的x标记:

<presence
    to='darkcave@chat.shakespeare.lit/thirdwitch'>
  <x xmlns='http://jabber.org/protocol/muc'/>
</presence>


我不知道您的库,但是您需要类似以下代码:

xmppClient.Send(new Presence
{
    To = "roomname@conference.SERVER/mynick",
});

10-06 10:50
查看更多