我在我的Artalk XMPP应用程序中使用了C# nuget包。我能够通过我们局域网上的Ignite userA@domain.com
服务器从用户帐户userB@domain.com
发送消息到用户帐户OpenFire。这些信息中有几个小问题不值得炫耀:
编辑:
因为我问了上面的问题,我尝试在消息体上使用System.Security.SecurityElement.Escape()
,并将它封装在<![CDATA[]]>
中,并且它被保存下来了。问题仍然存在。
userB
还将所有成功传递的消息复制回userA
。如果userA
不是交互式的,这是可以的,但是如果它也是一个真正的人,那么它可能是令人讨厌的。这是服务器或远程客户端的事情,有什么办法可以避免吗?我知道远程用户的客户端不使用通过Jabber客户端发送给他们的常规聊天消息。接下来,我让userB@domain.com
邀请userA@domain.com
到聊天室conference.domain.com@conference.domain.com
,并试图发送消息到那个聊天室,仍然来自userA@domain.com
。在会议室没有收到任何消息,在发送过程中也没有抛出任何例外。
ArtalkXmppClient xmpp;
xmpp = new ArtalkXmppClient("domain.com", "userA@domain.com", "secret", 5222, true);
try
{
var msg = new Message(
"conference.domain.com@conference.domain.com",
"test message body",
"conference subject", // conference allows participants to change subject
null,
MessageType.Groupchat,
CultureInfo.CurrentCulture);
if (!xmpp.Connected)
{
xmpp.Connect("myapp");
}
xmpp.SendMessage(msg);
return true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
发布于 2020-11-14 17:06:54
组聊天部分问题的解决方案是在尝试发送到服务器并使用MessageType.Chat
之前先在服务器上创建组。
最后一部分是违反直觉的,如果我不忘在测试期间在配置中启用组聊天的话,我就永远不会想出来了。当使用MessageType.GroupChat
或Chat
以外的任何类型时,它根本不起作用。
此外,主题必须是null
,否则主题将更改,但不会传递任何消息。主题的变化必须以自己的方式发送,没有身体的单独的信息。
我注意到的唯一的副作用是,通过集体聊天,而不是面对面的聊天,这些信息似乎被逃脱了。我不知道相对于面对面的聊天,是什么让他们逃脱了,但这是可以接受的。
https://stackoverflow.com/questions/64835924
复制相似问题