搜索

首页  >  问答  >  正文

iOS,什么应用或者场景下需要使用socket编程?

一些应用只是使用了HTTP编程,也就是只用了AFNetworking。 但是听说IM类的应用需要使用到socket,是为什么呢?

大家讲道理大家讲道理2895 天前312

全部回复(2)我来回复

  • ringa_lee

    ringa_lee2017-04-18 09:35:47

    http是一次性的,socket可以实现长连接,凡是一个来回网络请求解决不了问题的都会用socket。
    比如微信里刷新朋友圈、下载图片用http请求,收消息因为这边不知道什么时候来消息就搞个socket一直监听,发消息因为会比较频繁用http每次都要重新握手所以也要用socket,还有音视频通话,断点续传等等都要用socket。理论上启动微信或断网重连后的同步消息可以用http去请求没有收到的消息,但是因为诸多原因也是用socket。

    当然我上面说的只是最基本的原因,用socket还有非常多的原因是http实现不了的。
    凡是http能实现的,socket都能实现,因为http也只是socket via tcp的一种应用场景的协议。

    IM大都是在socket基础上自己搞的一套传输协议,类似http,只不过是针对自己的业务开发的。

    回复
    0
  • 阿神

    阿神2017-04-18 09:35:47

    • IM应用服务器为了获取用户登录状态要不停地发送“心跳包”确认用户在线和用户的网络情况,用HTTP的话会有太多冗余信息(HEADER,CONTENT-TYPE,STATUS)之类的。

    • 很多IM应用为了安全性或者压缩数据会实现自己的网络协议。

    回复
    0
  • 取消回复