OGeek|极客世界-中国程序员成长平台

标题: ios - XMPP IOS Openfire 在发送元素后断开连接 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 15:55
标题: ios - XMPP IOS Openfire 在发送元素后断开连接

发送自定义元素后,我断开了连接。有什么办法吗?我的连接代码

  [self addDelegate:self delegateQueue:dispatch_get_main_queue()];

[self setHostName"bowerchat.com"];
[self setHostPort:5222];

self.myJID = [XMPPJID jidWithString:[NSString stringWithFormat"%@@bowerchat.com",UD_getObj(@"myPhoneNumber")]];

NSError * error;
[self connectWithTimeout:300 error:&error];

断线问题

Domain=GCDAsyncSocketErrorDomain Code=7 "Socket closed by remote peer" 

发现问题后,我将@"type"参数更改为@"type2",现在它正在工作...但我找不到原因?

-(void)sendMessageToServerNSDictionary*)paraDict{
NSString * userPhone = [[DBHelper sharedObject]getUserPhone:paraDict[@"friend_id"]];
NSXMLElement *a = [NSXMLElement elementWithName"request" xmlns"urn:xmpp:receipts"];
if(paraDict[@"type"] != nil){
NSMutableDictionary * k = [[NSMutableDictionary alloc]initWithDictionary:paraDict];

    NSString * typeValue = [k[@"type"]copy];
    [k removeObjectForKey"type"];
    [k setObject:typeValue forKey"type2"];

paraDict = k;
}
XMPPElement *e = [[XMPPElement alloc] initWithName"message"];
for(NSString * key in paraDict.allKeys){
    [e addAttributeWithName:key stringValue:paraDict[key]];
}
[e addAttributeWithName"to" stringValue:getJabberString(userPhone)];
[e addAttributeWithName"from" stringValue:getMyJabberString];
[e addChild:a];
NSLog(@"%@",[e attributesAsDictionary]);
[self sendElement:e];

}



Best Answer-推荐答案


消息类型属性内置于 XMPP 协议(protocol)中。它在 XMPP 上具有精确的含义,您不能将所需的内容作为 type 消息属性的值。根据 XMPP RFC 中的定义,唯一可能的类型是:

您不能在消息类型中添加任何内容,或者实际上,否则服务器应该断开您的连接。

引用:http://xmpp.org/rfcs/rfc6121.html#message-syntax-type

关于ios - XMPP IOS Openfire 在发送元素后断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31792724/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4