XMPP实现即时通信方案
OPenfire服务器搭建
MySQL数据库安装
OpenFire服务器搭建
ios即时通讯客户端开发之-mac上搭建openfire服务器
IOS端
iOS开发之使用XMPPFramework实现即时通信(一)
iOS开发之使用XMPPFramework实现即时通信(二)
iOS XMPP协议即时通讯(比较全面)
即时通讯汇总贴
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 方式安装安装过程没有提示要输入管理账号密码