Socket 扫盲篇

Q: Socket 很难吗?

A: 不难


Q :Socket 长连接跟Http短连接有什么区别

A: 1.Http是发送一个请求,这个请求就会有一个回调
2.Socket是创建一个连接,发送多个请求,所有的请求结果都在同一个回调方法里面监听,具体这个消息怎么解析就要看业务逻辑了。常用的就是在返回来的消息body(json)里面用messageType来做区分,然后根据messageType将body转发到不同的业务逻辑里面去解析


Q :Http 是在程序的任意的地方发送请求和监听回调,那么Socket应该在哪里创建长连接和监听呢

A: Socket 应该在程序的入口处,比如AppDelegate里面创建连接和监听消息。这样的好处就是,不会因为VC出栈而导致消息端口断开或消亡


Q :Http发送请求都有特定的回调,可以直接处理业务逻辑,而Socket是在不同时间点发送的所有请求都在同一个方法响应并返回数据,那请求回来的数据要回调到发送请求的地方应该怎么办呢?

A: 我的做法是发送消息前,创建一个唯一的requestId ,并携带到要发送的消息体里面,下一步很重要: 调用发送消息前,添加一个通知的监听,通知的名称就是requestId ,而服务器返回来的消息体,也就是在回调接口处,每一个消息体,如果requestId (服务器要将客户端发送过去的requestId 带回来,开发前协商好)不为空,那么说明这个消息是对请求结果的回调,然后发送一个通知,通知名就是requestId 。这样就解决了发送请求唯一,请求回调也唯一。


Q: 请求多久没响应算超时?

A:如果很多业务的请求都走Socket通道,或服务器压力较大,或考虑到弱网络应用场景较多,那么建议一分钟后算超时!反过来,Sokect的使用较为低频,应用环境相对友好,可以设置15秒超时。

有时间的话补上一点iOS 的代码实践供大家参考

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,280评论 19 139
  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,475评论 0 6
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,311评论 6 13
  • ———————————————回答好下面的足够了---------------------------------...
    恒爱DE问候阅读 1,776评论 0 4
  • 很多年以前,第一次认识你的时候是因为我们俩的跑操迟到,被老师罚跑。我依旧记得那个开学之处的清晨,我们一前一后奔跑的...
    佈依阅读 329评论 0 0