- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我正在开发 iOS 聊天客户端。谁能帮我解决多用户聊天问题?
我已经实现了 Robbiehanson 的 XMPPFramework。
谁能告诉我如何使用此框架获取组列表并在服务器中创建组?
提前致谢。
最佳答案
获取房间列表:
NSString* server = @"chat.shakespeare.lit"; //or whatever the server address for muc is
XMPPJID *servrJID = [XMPPJID jidWithString:server];
XMPPIQ *iq = [XMPPIQ iqWithType:@"get" to:servJID];
[iq addAttributeWithName:@"from" stringValue:[xmppStream myJID].full];
NSXMLElement *query = [NSXMLElement elementWithName:@"query"];
[query addAttributeWithName:@"xmlns" stringValue:@"http://jabber.org/protocol/disco#items"];
[iq addChild:query];
[xmppStream sendElement:iq];
检查委托(delegate)方法中的响应:
- (BOOL)xmppStream:(XMPPStream *)sender didReceiveIQ:(XMPPIQ *)iq{
DDLogVerbose(@"%@", [iq description]);
return NO;
}
加入或创建房间
XMPPRoomMemoryStorage * _roomMemory = [[XMPPRoomMemoryStorage alloc]init];
NSString* roomID = @"roomExample@chat.shakespeare.lit";
XMPPJID * roomJID = [XMPPJID jidWithString:roomID];
XMPPRoom* xmppRoom = [[XMPPRoom alloc] initWithRoomStorage:_roomMemory
jid:roomJID
dispatchQueue:dispatch_get_main_queue()];
[xmppRoom activate:self.xmppStream];
[xmppRoom addDelegate:self delegateQueue:dispatch_get_main_queue()];
[xmppRoom joinRoomUsingNickname:@"myNickname"
history:nil
password:nil];
检查 XMPPRoom 委托(delegate)方法中的响应:
- (void)xmppRoomDidCreate:(XMPPRoom *)sender{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}
- (void)xmppRoomDidJoin:(XMPPRoom *)sender{
DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD);
}
配置房间:
之后:
[xmppRoom joinRoomUsingNickname:self.xmppStream.myJID.user
history:history
password:nil];
添加:
[xmppRoom fetchConfigurationForm];
并检查响应:
- (void)xmppRoom:(XMPPRoom *)sender didFetchConfigurationForm:(NSXMLElement *)configForm{
DDLogVerbose(@"%@: %@ -> %@", THIS_FILE, THIS_METHOD, sender.roomJID.user);
}
查看 configForm
对象,并根据需要进行更改,然后使用 [sender configureRoomUsingOptions:newConfig];
发送它
示例:要更改配置以使房间持久化,您可以添加如下内容:
NSXMLElement *newConfig = [configForm copy];
NSArray* fields = [newConfig elementsForName:@"field"];
for (NSXMLElement *field in fields) {
NSString *var = [field attributeStringValueForName:@"var"];
if ([var isEqualToString:@"muc#roomconfig_persistentroom"]) {
[field removeChildAtIndex:0];
[field addChild:[NSXMLElement elementWithName:@"value" stringValue:@"1"]];
}
}
[sender configureRoomUsingOptions:newConfig];
(我不熟悉 NSXMLElement,所以也许有更好的方法来更改值)
关于ios - XMPPFramework - 实现群聊 (MUC),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19268629/
我想知道这里是否有人可以提供以下场景的一些代码示例。我对使用 xmpppy 执行此操作特别感兴趣,因为我已经在我的应用程序中使用了该库,但其他库也可以。不幸的是,xmpppy 项目网站没有这方面的任何
我正在使用 ejabberd 15.09 并为服务器配置中的每个 MUC 启用存档管理,如下所示: mod_mam: default: always mod_muc: ## host
有人有 Strope muc 扩展中 join、changenick 等函数调用的示例代码吗? 我自己尝试这样做,不知道如何调用扩展函数,并将插件添加到js中,是否添加 最佳答案 您需要在我们的 ht
作为占用者/成员,我需要了解 ejabberd-14.x 房间中的所有“成员” 我关注了http://xmpp.org/extensions/xep-0045.html#getmemberlist 我
我尝试使用 prosody 进行 session 聊天,对于客户端,我使用 strophe.js。一切都很好,除了一件事,即当用户刚加入房间时向用户显示的聊天记录不完整。例如:一位客户已经向房间发送了
我正在尝试使用 Mongoseim Server 在 iOS 应用程序中实现 muc light。对于群聊,我使用 muclight,但是当我通过以下方式发现我的服务时: let toStr: Str
我正在尝试使用 xmpp、strope 和 javascript 连接到聊天室。我可以使用以下方式加入聊天室: connection.muc.join(room_name + "@conference
我是 XMPP 的新手 :) 我一直在使用 Ejabberd 和 sleekXMPP。我的问题是如何使用 sleekXMPP 列出在线房间? 谢谢 最佳答案 我也为此苦苦挣扎了一段时间。列出房间不是
我正在开发一个 iOS XMPP 聊天应用程序,它使用 Robbie Hanson 的 XMPPFramework。 最重要的功能已经实现 - 发送和接收消息。基本上,我已经构建了一个基本的功能性聊天
我正在开发 iOS 聊天客户端。谁能帮我解决多用户聊天问题? 我已经实现了 Robbiehanson 的 XMPPFramework。 谁能告诉我如何使用此框架获取组列表并在服务器中创建组? 提前致谢
xep-0313 适用于花名册,但不适用于聊天室。我可以获取花名册的存档消息,但无法获取房间的存档消息,为什么? urn:xmpp:mam:0
用用户'username@localhost'连接到openfire服务器后我正在尝试创建一个群聊即时聊天室,所以首先我按照此处指定的方式发送 Presence Stanza: 但是响应总
用用户'username@localhost'连接到openfire服务器后我正在尝试创建一个群聊即时聊天室,所以首先我按照此处指定的方式发送 Presence Stanza: 但是响应总
我正在尝试使用 xmpp_messenger_ios 和 XMPPFramework 在 iOS 上执行 MUC 这是加入房间的代码。 func createOrJoinRoomOnXMPP()
在 XMPP 中 MUC是否可以发布每个在线用户的地理位置信息? 最佳答案 当然,客户可以简单地包含一个 元素(在 XEP-0080 中定义)出现在房间中: 20
我总是在加入房间时收到群聊历史记录。更具体地说,每当我加入一个群组时,我都会收到我发送给该群组的最后一条消息(只有一条消息)。我已经尝试了以下方法来禁用它.. 根据 documentation sug
引用这个,我正在实现一个群聊配置。 XMPPFramework - Implement Group Chat (MUC) 但是作为参与者而不是主持人,我无法获得成员列表。我已尝试阅读多个堆栈答案,要求
我正在使用适用于 iOS 的 XMPPFramework 来实现具有默认核心数据 (XMPPMessageArchivingCoreDataStorage) 的群聊 (MUC)。 我能够在两台设备之间
当我使用 XMPPFramwork 加入 MUC 房间时,我会通过委托(delegate)方法收到新消息: func xmppRoom(sender: XMPPRoom!, didReceiveMes
在第一条群组消息之后,strophe.muc 插件不会对后续消息作出 react 。我从房间获得第一个状态、消息和花名册,但所有后续消息和状态节都不会触发这些功能。我认为这些行有问题: this.ro
我是一名优秀的程序员,十分优秀!