XMPP实现即时通信方案

XMPP实现即时通信方案

OPenfire服务器搭建

MySQL数据库安装

Mac OS X 下 TAR.GZ 方式安装 MySQL

ios即时通讯客户端开发之-mac上安装MySQL

Mac操作系统下忘记MYSQL的密码

OpenFire服务器搭建

ios即时通讯客户端开发之-mac上搭建openfire服务器

IOS端

iOS开发之微信聊天页面实现

iOS开发之使用XMPPFramework实现即时通信(一)

iOS开发之使用XMPPFramework实现即时通信(二)

iOS XMPP协议即时通讯(比较全面)

即时通讯汇总贴

iOS 即时通讯 + 仿微信聊天框架 + 源码

iOS开发之即时通讯之Socket(AsyncSocket)

注意点:

  • 一个用户(对于ios来说也就是我们的项目中)只能有一个正在连接的socket //单例或者AppDelegate进行数据共享
  • 对一个已经连接的socket对象再次进行连接操作,会抛出异常。(不可对已经连接的socket进行连接)程序崩溃,所以在连接socket之前要对socket对象的连接状态进行判断
  • 必须的操作,即对服务器发送心跳包,每隔一段时间对服务器发送长连接指令(指令不唯一,由服务器端指定,包括使用socket发送消息,发送的数据和格式都是由服务器指定)如果没有收到服务器的返回消息,AsyncSocket会得到失去连接的消息,我们可以在失去连接的回调方法里进行重新连接。

收发消息:

发送消息

socket发送数据是以栈的形式存放,所有数据放在一个栈中,存取时会出现粘包的现象,所以很多时候服务器在收发数据时是以先发送内容字节长度,再发送内容的形式,得到数据时也是先得到一个长度,再根据这个长度在栈中读取这个长度的字节流,如果是这种情况,发送数据时只需在发送内容前发送一个长度,发送方法与发送内容一样,假设长度为8

NSData *dataStream = [@8 dataUsingEncoding:NSUTF8StringEncoding]; [self.socket writeData:dataStream withTimeout:1 tag:1];

接收消息

为了能时刻接收到socket的消息,我们在长连接方法中进行读取数据

【备注】关于NSData对象

无论SOCKET收发都采用NSData对象。


作者小结:
mac笔记本 mysql 建立本地数据库 Tar 方式安装安装过程没有提示要输入管理账号密码

你可能感兴趣的:(XMPP实现即时通信方案)