草庐IT

android - 互联网连接丢失时,xmpp ejabberd 在线离线状态问题

我将ejabberd设置为移动应用程序之间的xmpp服务器,即。自定义iPhone和Android应用程序。但我似乎遇到了ejabberd处理在线状态的方式的限制。假设有两个用户A和B是彼此的friend并且正在进行实时聊天对话。假设他们中的一个失去了他的互联网连接,那么就没有办法立即将他的状态更新到服务器。所以他的状态一直在线。解决此问题的一种方法是在xmpp中使用mod_ping模块。但它也有一定的局限性,它会在32秒间隔后ping每个客户端。所以用户的状态更新总是有30到40秒的延迟。我想在良好的网络条件下立即(少于10秒)更新任何用户的状态,例如最新情况。这是每个人面对的聊天应

ios - 在 iOS 上通过 websocket 连接到 XMPP?

我需要通过iOS上的websocket连接到XMPP服务器(ws://chat.something.com:1234/websocket)。我正在使用XMPPFramework,但我找不到通过websocket连接的方法。我发现这个答案https://stackoverflow.com/a/23114564/310121表明XMPPFramework不支持这个。据我所知,这似乎是真的。那么有什么方法可以通过iOS上的websocket连接到XMPP服务器,而无需编写自己的库或扩展XMPPFramework(或其他替代库)来支持它? 最佳答案

ios - 当用户遇到错误或与 XMPP 断开连接时重新连接 XMPP

我在XMPP框架的帮助下实现了一个聊天应用程序。但是我收到一个错误,如图所示:xmppdidreceiveerror:-Printingdescriptionoferror:Replacedbynewconnection需要有关可能导致此错误的原因以及如何使用XMPP重新连接的一些指导。谢谢。 最佳答案 使用XMPPReconnect类..@property(nonatomic,readonly)XMPPReconnect*xmppReconnect;self.xmppReconnect=[[XMPPReconnectalloc]i

iphone - iOS XMPP群聊实现

我正在尝试使用robbiehansonXMPPframework创建聊天室。由于没有得到任何示例代码和文档,我自己尝试发起一个聊天室如下:XMPPRoomMemoryStorage*rosterstorage=[[XMPPRoomMemoryStoragealloc]init];XMPPRoom*xmppRoom=[[XMPPRoomalloc]initWithRoomStorage:rosterstoragejid:[XMPPJIDjidWithString:@"test@mycompany.com/room"]dispatchQueue:dispatch_get_main_queu

iOS:XMPP:获取离线消息

场景:我使用https://github.com/robbiehanson/XMPPFramework创建聊天基于iOS应用程序。它就像一个魅力,一对一和团体消息无缝工作。问题:我发送给离线用户的消息丢失了。用户上线后收不到离线消息。在群聊中,没问题,因为如果用户再次加入ChatRoom,默认情况下他会收到所有消息。但在一对一聊天中,消息会丢失。保存所有聊天记录并检索它们已经实现。我正在使用XMPPMessageArchiving和XMPPMessageArchivingCoreDataStorage来实现相同的目的。如果有人能指出正确的方向来解决这个问题,那将非常有帮助。

ios - 有没有使用 XMPP 添加和自动接受好友的好方法?

我正在尝试构建一个使用XMPP协议(protocol)的iOS应用程序。我正在为iOS使用XMPPFramework。我的应用程序有一些限制。我必须自动注册一些新用户(好的,这很容易做到)。用户也应该能够自动将其他用户添加为friend,所以我应该实现一些自动接受好友请求然后能够看到好友列表的东西。有什么好的方法吗?我考虑过在以下地方实现一些东西:-(void)xmppRoster:(XMPPRoster*)senderdidReceiveBuddyRequest:(XMPPPresence*)presence自动接受请求。但是,我怎样才能将这个联系人添加到用户的好友列表中呢?这部分的

ios - 如何通过 XMPP 服务器检查特定用户的在线/离线状态

我正在构建一个应用程序,我需要在其中仅查找过去与我交换过消息的那些用户的在线/离线状态。并非服务器上的所有用户都可用。提前致谢。 最佳答案 -您可以使用XMPPIQ获取特定用户的在线/离线状态您需要使用“typeget”创建XMPPIQ,如下所示letquery=XMLElement(name:"query",xmlns:"jabber:iq:last")letstreamUUID=self.xmppStream.generateUUID()letiq=XMPPIQ(type:"get",to:XMPPJID(string:jid)

ios - xmpp - 在 ios 中使用 turnsocket 发送/接收文件

我正在开发聊天应用程序。现在我想使用TurnSocket类发送文件,但套接字无法连接。-(void)sendToOtherDevice:(NSData*)fileDatareceiverJid:(NSString*)receiverJid{XMPPJID*JID=[XMPPJIDjidWithString:[NSStringstringWithFormat:@"%@/%@",receiverJid,resourceID]];NSLog(@"%@",[JIDfull]);NSLog(@"AttemptingTURNconnectionto%@",JID);[TURNSocketsetPr

iOS XMPP 从不接收任何好友/名册请求

设置我正在使用此代码发送好友/名册请求:[[[XMPPControllersharedObject]roster]addUser:[XMPPJIDjidWithString:[userstringByAppendingString:@"@server.com"]]withNickname:nil];我可以确认在ejabberdWeb管理控制面板中,请求已发送。此外,请求在流委托(delegate)方法中返回:-(BOOL)xmppStream:(XMPPStream*)senderdidReceiveIQ:(XMPPIQ*)iq作为确认。我在这里阅读了多个问题,请求应该在委托(dele

ios - 在 XMPP 中以后台模式工作

我正在研究XMPP。我想在后台模式下收到通知。我也实现了这些东西,-(void)xmppStream:(XMPPStream*)sendersocketWillConnect:(GCDAsyncSocket*)socket{//Tellthesockettostayaroundiftheappgoestothebackground(onlyworksonappswiththeVoIPbackgroundflagset)[socketperformBlock:^{[socketenableBackgroundingOnSocket];}];}在我的代码中,我在应用程序plist文件的后台