美文网首页Objective-c
如何利用socket实现即时通讯简介

如何利用socket实现即时通讯简介

作者: Coder东 | 来源:发表于2017-02-28 10:05 被阅读71次

    以前写即时通讯的时候总是利用第三方环信去实现,当然这也是最直接最便捷的方法。不过最近闲来无事所以想了解下底层的socket如何和xmpp关联到底如何实现的呢?探索之路,有错必纠!!!

    利用环信方法:

    EaseUI 使用指南 [环信开发文档]

    首先介绍XMPPFramework环境配置:

    XMPPFramework是一个OS X/iOS平台的开源项目,使用Objective-C实现了XMPP协议(RFC-3920),同时还提供了用于读写XML的工具,大大简化了基于XMPP的通信应用的开发。

    XMPP的地址叫做JabberID(简写为JID),它用来标示XMPP网络中的各个XMPP实体。JID由三部分组成:domain,node identifier和resource。JID中domain是必不可少的部分。注意:domain和user部分是不分大小写的,但是resource区分大小写。

    XMPP通信原语有3种:message、presence和iq。

    1、message message是一种基本推送消息方法,它不要求响应。主要用于IM、groupChat、alert和notification之类的应用中。 主要 属性如下: 1)、type属性,它主要有5种类型:

    normal:类似于email,主要特点是不要求响应;

    chat:类似于qq里的好友即时聊天,主要特点是实时通讯;

    groupchat:类似于聊天室里的群聊;

    headline:用于发送alert和notification;

    error:如果发送message出错,发现错误的实体会用这个类别来通知发送者出错了;

    2)、to属性:标识消息的接收方。 3)、from属性:指发送方的名字或标示。为防止地址外泄,这个地址通常由发送者的server填写,而不是发送者。 2、presence presence用来表明用户的状态,如:online、away、dnd(请勿打扰)等。当改变自己的状态时,就会在stream的上下文中插入一个Presence元素,来表明自身的状态。要想接受presence消息,必须经过一个叫做presence subscription的授权过程。 3、iq(Info Query) 一种请求/响应机制,从一个实体从发送请求,另外一个实体接受请求,并进行响应。例如,client在stream的上下文中插入一个元素,向Server请求得到自己的好友列表,Server返回一个,里面是请求的结果。

    主要的属性是type。包括:

    Get :获取当前域值。类似于http get方法。

    Set :设置或替换get查询的值。类似于http put方法。

    Result :说明成功的响应了先前的查询。类似于http状态码200。

    Error: 查询和响应中出现的错误。

    二、开发环境配置 主要用到的工具软件有Openfire,mysql,jdk,Navicat,spark等,这些在网上都可以下载到。接下来就可以安装了: 第一步:安装jdk  一步一步点击就可以了。 第二步,安装mysql。 都安装好之后,会在偏好设置里面看到以下三个:

    openfire 是开源的、基于可拓展通讯和表示协议(XMPP)、采用Java编程语言开发的实时协作服务器。 Openfire安装和使用都非常简单,并利用Web进行管理。单台服务器可支持上万并发用户。

    相关文章

      网友评论

        本文标题:如何利用socket实现即时通讯简介

        本文链接:https://www.haomeiwen.com/subject/yheovttx.html