如何在iOS中使用ejabberd设置我的xmpp服务器

时间:2015-08-28 03:14:10

标签: ios xmpp ejabberd

  • ejabberd我已逐步安装了最新的ejabberd建议,并使用类似jyhu设置主机名test@jyhu

  • xmpp我从github下载了最新的XMPPFramework。

  • iOS设置项目:

    1. init xmppStream

       self.xmppStream = [[XMPPStream alloc] init];
       [self.xmppStream addDelegate:self delegateQueue:dispatch_get_main_queue()];
       [self.xmppStream setHostName:@"127.0.0.1"];
       [self.xmppStream setHostPort:5280];
      
    2. setup JID

      [self.xmppStream setMyJID:[XMPPJID jidWithString:self.userName]];
      
    3. connect

      if (![self.xmppStream connectWithTimeout:XMPPStreamTimeoutNone error:&error])
      {
            NSLog(@"%@", [error userInfo]);
      }
      

然后设置一些相关的委托方法。

当我运行我的项目时,ejabberd日志显示为

  

2015-08-28 10:45:29.890 [info]< 0.436.0> @ejabberd_listener:accept:299(#Port< 0.3800>)接受的连接127.0.0.1:62419 - > 127.0.0.1:5280   2015-08-28 10:45:29.890 [info]< 0.442.0> @ejabberd_http:init:157开始:{gen_tcp,#Port< 0.3800>}

代表将继续:

  1. - (void)xmppStreamWillConnect:(XMPPStream *)sender

  2. - (void)xmppStream:(XMPPStream *)sender socketDidConnect:(GCDAsyncSocket *)socket

  3. - (void)xmppStreamDidStartNegotiation:(XMPPStream *)sender

  4. - (void)xmppStreamDidDisconnect:(XMPPStream *)sender withError:(NSError *)error

  5.   

    但最重要的方法- (void)xmppStreamDidConnect:(XMPPStream *)sender永远不会被执行。

1 个答案:

答案 0 :(得分:0)

您正在尝试连接端口5280,该端口是为XMPP Bosh和Websocket传输保留的。您可能希望在标准XMPP端口(即5222)上进行连接。