XMPP 简单即时通讯
搭建服务器和数据库
搭建服务器我用的是 Openfire,数据库用的是 MySQL。
这里推荐两篇文章。
配置 MySQL,用的是 MySQL Workbench。
http://justsee.iteye.com/blog/1753467
配置服务器 Openfire。
http://www.cnblogs.com/xiaodao/archive/2013/04/05/3000554.html
先配置好数据库,然后配置服务器。
然后两个都打开。

数据库也打开。

下一个 XMPP 客户端,就是用来测试的。
我下的是 Adium。

配置
然后在 Adium 里面添加账号,服务器要用 Openfire 设置好的 127.0.0.1,端口用 5222。
这里 Openfire 里面的服务器端口,5222 是客户端连接服务器。

登录成功后可以在 Openfire 里面看到用户已经在线。

然后另一个客户端,我直接用代码,觉得麻烦没做界面。
简单实现。
设置 XMPPStream。
1 | - (XMPPStream *)stream |
然后设置账号,只是测试,所以直接在 viewDidLoad 里面写了。
1 | - (void)viewDidLoad { |
然后就是验证密码,下面的方法是上线,这些是代理方法,记得设置 XMPPStream 的代理。
1 | - (void)xmppStreamDidConnect:(XMPPStream *)sender |
这是接收信息的方法,我没做界面,直接打印出来接收的信息。
1 | - (void)xmppStream:(XMPPStream *)sender didReceiveMessage:(XMPPMessage *)message |
如果验证失败的话,会调用这个方法。
1 | - (void)xmppStream:(XMPPStream *)sender didNotAuthenticate:(DDXMLElement *)error |
后来在 Openfire 查看,用户名必须带服务器名。

例如我的账号是 test123,设置 JID 的用户名就是 [email protected]。
1 | [self.stream setMyJID:[XMPPJID jidWithString:@"[email protected]"]]; |
然后运行,没有报错,在 Openfire 显示已经在线。

然后就可以开始聊天了,下面的是刚发的,上面的是之前的聊天记录。
发了文字和一个链接。

然后 Xcode 输出。

即时通讯最简单的就这样,退出 APP 后 Openfire 后台就会显示下线。