标签: xmpp

适用于.NET 3.5(或4.0)的优秀XMPP/Jabber客户端库

什么是用于.NET 3.5或4.0开发的一些好的(或最好的!)XMPP/Jabber客户端库?

我已经看到了一些不错的库,但大多数好的库似乎是为Framework 2.0构建的.

(如果Framework 2.0库仍然是最好的,我对此很满意.我只是在为3.5或4.0构建的新项目寻找最好的库).

.net xmpp .net-4.0 .net-3.5

18
推荐指数
2
解决办法
2万
查看次数

XMPPFramework - 如何创建MUC会议室并邀请用户?

我正在使用Robbiehanson的iOS XMPPFramework.我正在尝试创建一个MUC房间并邀请用户进入群聊室,但它无法正常工作.

我使用以下代码:

XMPPRoom *room = [[XMPPRoom alloc] initWithRoomName:@"user101@conference.jabber.org/room" nickName:@"room"];
[room createOrJoinRoom];
[room sendInstantRoomConfig];
[room setInvitedUser:@"ABC@jabber.org"];
[room activate:[self xmppStream]];    
[room inviteUser:jid1 withMessage:@"hello please join."];
[room sendMessage:@"HELLO"];
Run Code Online (Sandbox Code Playgroud)

用户ABC@jabber.org应该收到邀请消息但没有发生任何事情.

任何帮助将不胜感激.:)

xmpp objective-c ios xmppframework

18
推荐指数
1
解决办法
1万
查看次数

XMPP aSmack - 如何获取当前用户状态(离线/在线/离开/等)?

我是android的新手xmpp/asmack.

谁能帮助我获得用户朋友的存在(名单)

我用这个:

Presence availability = roster.getPresence(user);
Mode userMode = availability.getMode();
Run Code Online (Sandbox Code Playgroud)

我还应该做些什么来获取我名单中列出的每个用户的可用性状态.

android xmpp smack asmack

18
推荐指数
1
解决办法
1万
查看次数

启用流管理asmack android

我正面临使用XEP-0198流管理的问题.

基本上,我想在互联网断开连接并且服务器仍然在线存在客户端时,在Android上启用此消息丢弃问题.

为了解决这个问题,我想使用XEP-0198,它使用请求和确认过程.你可以在这里找到更多.

基本上我使用的是sm:3.问题是,当我设置

XMPPConnection.DEBUG_ENABLED=true;
Run Code Online (Sandbox Code Playgroud)

我在日志中得到sm:3,这是asmack的内部,但我无法通过连接找到任何packetListner.

这就是asmack调试打印内容:

<r xmlns='urn:xmpp:sm:3'/><message from='test1@pinmessage.com/Smack' to='test1@pinmessage.com' id='CQUe6-5'><received xmlns='urn:xmpp:receipts' id='CQUe6-4'/></message><r xmlns='urn:xmpp:sm:3'/>
Run Code Online (Sandbox Code Playgroud)

这是我从packetFilter得到的:

<message id="CQUe6-5" to="test1@pinmessage.com" from="test1@pinmessage.com/Smack"><received xmlns='urn:xmpp:receipts' id='CQUe6-4'/></message>
Run Code Online (Sandbox Code Playgroud)

我曾经通过查看聊天安全和yaxim的代码尝试过自定义数据包过滤器,但是我没有得到如何<r xmlns='urn:xmpp:sm:3'/>在我的代码中获得这个,以便我可以将收到的数据包的数量现在返回到服务器,以便服务器可以发送我支持任何丢失的数据包.

我还通过添加以下代码为此配置了提供程序管理器:

        addSimplePacketExtension("sm", URN_SM_3);
        addSimplePacketExtension("r", URN_SM_3);
        addSimplePacketExtension("a", URN_SM_3);
        addSimplePacketExtension("enabled", URN_SM_3);
        addSimplePacketExtension("resumed", URN_SM_3);
        addSimplePacketExtension("failed", URN_SM_3);


private static final String URN_SM_3 = "urn:xmpp:sm:3";
    private static void addSimplePacketExtension(final String name, final String namespace) {
        Log.e("adding simple packet extension", namespace+"---"+name);
        ProviderManager.getInstance().addExtensionProvider(name, namespace,
                new PacketExtensionProvider() {
            public PacketExtension parseExtension(XmlPullParser parser) throws Exception {
                StreamHandlingPacket packet = new StreamHandlingPacket(name, …
Run Code Online (Sandbox Code Playgroud)

android xmpp asmack

18
推荐指数
1
解决办法
1926
查看次数

XMPP服务器:ejabberd vs openfire vs韵律

我正在试图弄清楚XMPP是如何工作的(一般是协议中的初学者),我想设置一个服务器.

到目前为止,我看到了3个主要挑战者:

  • ejabberd
  • 开火
  • 韵律学

我检查了一些网站和维基百科,但我看不出有关所有这些的利弊.

我在哪里可以找到一些可以理解的信息?

PS:如果上下文在某种程度上很重要,我想在我的个人树莓派上设置我的服务器(所以处理能力不是那么大),我的最终目标是使用谷歌云消息传递将XMPP用于一个小的Android应用程序

xmpp server

18
推荐指数
3
解决办法
3万
查看次数

使用XMPP服务器和Google云消息传递(或更新的Firebase云消息传递)进行推送通知的Android应用程序App

我正在为Android开发一个聊天应用程序.我已经阅读了几周关于XMPP和Google Cloud Messaging(以及Firebase云消息传递)的内容,我仍然感到非常困惑.

目前,我已经在本地设置了一个XMPP服务器(Ejabberd)并使用Smack库成功地将我的Android应用程序连接到它.

根据我的理解,我需要使用GCM或更新的FCM进行推送通知,因此我已经在Google Cloud Platform中创建了一个项目.我的Android应用程序也可以使用Smack库连接到它(而不是直接连接到我的XMPP服务器).在我的服务器中,我有一个小型Java应用程序,它也使用Smack库连接到GCM.

一切都很好,直到这里.我最大的困惑是:如何将我的XMPP服务器与GCM一起用于推送通知?我在服务器端实现中找到的每个文档,示例,指南和教程都告诉我如何连接到GCM,但没有人告诉我如何将我的XMPP服务器与GCM结合使用.我错过了什么?我的Java应用程序只是连接到GCM,从GCM接收和发送消息,但我的XMPP服务器只是坐在那里什么都不做.实际上我的Android App和服务器Java App只使用GCM,而不是我的XMPP服务器.

我希望有人可以帮助我理解这一点,我显然缺少实现这一实现的一些关键要素.

java android xmpp google-cloud-messaging firebase-cloud-messaging

18
推荐指数
3
解决办法
1万
查看次数

如何在订阅模式"两者"中添加名册

我正在使用smack 3.1.0,当我添加一个名册时,我无法获得"两者"的订阅.谁能帮我?下面是我的代码:

Roster.setDefaultSubscriptionMode(Roster.SubscriptionMode.accept_all);
Roster roster = connection.getRoster();
roster.createEntry("buddy@test.com","me",null)
Run Code Online (Sandbox Code Playgroud)

代码执行后,我在openfire中观察到订阅是"到"

java xmpp smack

17
推荐指数
2
解决办法
2万
查看次数

身份验证后xmpp登录失败

我已经看了一段时间这种行为,但这不是一个真正的问题.在我使用自己的应用程序在xmpp中成功验证后,错误关闭了我的连接:

<message from="chat.facebook.com" 
         to="-USERID@chat.facebook.com/RESOURCE" type="normal">   
   <subject>Lo sentimos, tu cuenta no está disponible</subject>
   <body>Your account is temporarily unavailable. Regain 
      access by logging into your account from your 
      computer&apos;s web browser: http://www.facebook.com/
   </body>
</message>

<stream:error>
   <conflict xmlns="urn:ietf:params:xml:ns:xmpp-streams"/>
   <text xml:lang="" xmlns="urn:ietf:params:xml:ns:xmpp-streams">
      Session terminated
   </text>
</stream:error>
Run Code Online (Sandbox Code Playgroud)

请注意断开连接之前收到的消息节.

为什么会发生这种情况?,我是否遇到了某种无证件限制?,除此之外,有没有办法区分这个错误和Facebook网页的断开连接?

我曾经检查过该消息节中收到的文本,但现在它们几乎每周更改一次,并且stream:error的文本对于这两种情况都是相同的,所以每次文本更改时更改应用程序都很痛苦.

authentication facebook conflict xmpp

17
推荐指数
1
解决办法
1096
查看次数

向ios发送推送通知,以便与离线用户openfire xmpp进行聊天

我有一个使用openfire的ios聊天应用程序,我需要做的是当消息(1)因任何原因无法发送时发送推送通知,(2)app处于暂停状态,即无法生成通知在其自己的.

我已经在stackoverflow和其他地方阅读了大部分有关此问题的相关问题/建议,我已经为我的问题得出了一些解决方案.我不是ios开发人员,也不是几天前我对openfire或xmpp一无所知,所以我担心我对事情的理解可能不完整,我的解决方案可能存在缺陷.

请确认我对它的理解,并建议我是否遗漏了某些东西,或者是否有更好的方法.还请建议实施下面列出的特定解决方案的复杂程度.

这里的挑战是确定何时需要推送以及何时启动流程,所以

1)一种方法是使用xmpp的xep-0184实现来检查消息是否已传递.要做到这一点,我们应该在ios数据库中有一些带有消息的传递标志,当从另一端收到传递的响应时更新.因此,我们需要在一段时间后检查此标志,如果传递的状态为false,则使用该消息启动推送过程.看起来是一个复杂的解决方案(等待响应..检查标志有一些时间滞后..不是很令人印象深刻)

2)更直接的方法是在openfire中做一些事情,当openfire无法传递它将其存储在离线表中的消息时,我们可以对该部分进行一些拦截并使用消息启动推送过程.这看起来是正确的方法,但我真的害怕在openfire中获得那么多东西并改变一些东西(这可能也很容易,有人用openfire工作了一点可以说出来吗?)

3)这是我的最后一招,这不是解决方案......但如果我无法在预期的时间范围内(从现在起一周内)正确完成,我们计划发送所有消息的推送通知.oppenfire将关注正常聊天,同时从我们的服务器发送每个消息的推送但是当应用程序在前台时,我们做一些事情来处理不需要显示的额外推送消息,否则只要有一个推送就会收到推送信息.你们怎么看待这种临时的方式(我们当然必须尽快改变这一点),这是可行的(或者我在这里也遗漏了一些东西).

PS谁能告诉Whatsapp和其他流行的应用程序如何处理这个?

非常感谢您的帮助.

chat xmpp openfire push-notification ios

17
推荐指数
1
解决办法
1万
查看次数

如何将与nodejs和xmpp的聊天集成到我现有的Web应用程序中?

我已经阅读了很多与此有关的问题,但没有一个令人满意.

现有应用程序

使用Expressjs作为API 实现的极简社交网络.使用MySql作为DB.socket.io用于通知, ember.js用作前端框架.

我想要整合什么

我想只实现XMPP的一些功能,如

  • 同行2同行消息
  • 存在和最后看到
  • 群聊
  • 阅读收据

我从阅读类似问题得到的基本想法.

  1. 需要一个客户端库(Strophe.js,Converse.js)
  2. 需要一个XMPP服务器(ejabberd,Openfire,Prosody)

问题

  1. 我如何在这里集成聊天?
  2. 如何验证XMPP用户(仅供参考,我目前已实施JWT身份验证)?
  3. 关于使用带有socket.io或mqtt pub/sub的redis(pub/sub)来实现聊天的建议.它是否可扩展?/性能怎么样?

我问的问题可能过于广泛.但是仍然不知道使用哪种技术.

xmpp redis node.js mqtt

17
推荐指数
1
解决办法
2318
查看次数