我在尝试将XMPP消息发送到OpenFire实例中的“Room”时遇到问题。最终结果是我们的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();
}
我可以发送给单个用户(相应地更改“收件人”和“类型”)而不会出现任何问题,但是将代码更改为指向房间会默默结束!是否需要进行一些额外的“握手”以解决房间问题?
我不需要使用C#作为解决方案,只要它可以在Windows服务器上运行。
答案 0 :(得分:2)
您需要阅读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",
});