首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Artalk XMPP库问题

Artalk XMPP库问题
EN

Stack Overflow用户
提问于 2020-11-14 16:09:00
回答 1查看 547关注 0票数 0

我在我的Artalk XMPP应用程序中使用了C# nuget包。我能够通过我们局域网上的Ignite userA@domain.com服务器从用户帐户userB@domain.com发送消息到用户帐户OpenFire。这些信息中有几个小问题不值得炫耀:

  • 如果我试图提供一个主题,它的前缀是" subject:“在客户端。这不是一个问题,但我想知道这是一个远程客户端或服务器的事情。
  • 消息体作为测试消息体封装在方括号中。这不是一个大问题,但我宁愿避免它,以保留所发送的信息的原样,为可能的自动处理。这是远程客户端还是服务器?
  • 如果消息正文包含XML,则发送成功,但从未收到。XMPP协议不允许发送XML吗?还是服务器或远程客户端的问题?

编辑:

因为我问了上面的问题,我尝试在消息体上使用System.Security.SecurityElement.Escape(),并将它封装在<![CDATA[]]>中,并且它被保存下来了。问题仍然存在。

  • userB还将所有成功传递的消息复制回userA。如果userA不是交互式的,这是可以的,但是如果它也是一个真正的人,那么它可能是令人讨厌的。这是服务器或远程客户端的事情,有什么办法可以避免吗?我知道远程用户的客户端不使用通过Jabber客户端发送给他们的常规聊天消息。

接下来,我让userB@domain.com邀请userA@domain.com到聊天室conference.domain.com@conference.domain.com,并试图发送消息到那个聊天室,仍然来自userA@domain.com。在会议室没有收到任何消息,在发送过程中也没有抛出任何例外。

代码语言:javascript
运行
复制
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);
}
EN

回答 1

Stack Overflow用户

发布于 2020-11-14 17:06:54

组聊天部分问题的解决方案是在尝试发送到服务器并使用MessageType.Chat之前先在服务器上创建组。

最后一部分是违反直觉的,如果我不忘在测试期间在配置中启用组聊天的话,我就永远不会想出来了。当使用MessageType.GroupChatChat以外的任何类型时,它根本不起作用。

此外,主题必须是null,否则主题将更改,但不会传递任何消息。主题的变化必须以自己的方式发送,没有身体的单独的信息。

我注意到的唯一的副作用是,通过集体聊天,而不是面对面的聊天,这些信息似乎被逃脱了。我不知道相对于面对面的聊天,是什么让他们逃脱了,但这是可以接受的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64835924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档