微信开发协议小结

 更新时间:2016年11月08日 15:50:58   作者:飞翔_企鹅  
通过本教程给大家分享微信开发协议小结的相关知识,非常不错,具有一定的参考借鉴价值,感兴趣的朋友一起看看吧

1.发布的消息对应一个ID(只要单个方向唯一即可,服务器端可能会根ID判断重复接收),消息重传机制确保有限次的重试,重试失败给予用户提示,发送成功会反馈确认,客户端只有收到确认信息才知道发送成功。发送消息可能不会产生新SyncKey。

2.基于版本号(SynKey)的状态消息同步机制,增量、有序传输需求水到渠成。长连接通知/短连接获取、确认等,交互方式简单,确保了消息可靠谱、准确无误到达。

3.客户端/服务器端都会存储消息ID处理记录,避免被重复消费客户端获取最新消息,但未确认,服务器端不会认为该消息被消费掉。下次客户端会重新获取,会查询当前消息是否被处理过。根据一些现象猜测。

4.总体上看,微信协议跨平台(TCP或HTPP都可呈现,处理方式可统一),通过“握手”同步,很可靠,无论哪一个平台都可以支持的很好

5.微信协议最小成本为16字节,大部分时间若干个消息包和在一起,批量传输。微信协议说不上最简洁,也不是最节省流量,但是非常成功的。

6.若服务器检测到一些不确定因素,可能会导致微启用安全套接层SSL协议进行常规的TCP长连接传输。短连接都没有发生变化

7.发送消息方式

发送消息走已经建立的TCP长连接通道,发送消息到服务器,然后接受确认信息等,产生一次交互。

小伙伴接收到信息阅读也都会收到服务器端通知,产生一次交互等。

可以确定,微信发送消息走TCP长连接方式,因为不对自身状态数据产生影响,应该不交换SyncKey。

在低速网络下,大概会看到消息发送中的提示,属于消息重发机制

网络不好有时客户端会出现发送失败的红色感叹号

已发送到服务器但未收到确认的消息,客户端显示红色感叹号,再次重发,服务器作为重复消息处理,反馈确认

上传图片,会根据图片大小,分割成若干部分(大概1.5K被划分为一部分),同一时间点,客户端会发起若干次POST请求,各自上传成功之后,服务器大概会合并成一个完整图片,返回一个缩略图,显示在APP聊天窗口内。APP作为常规的文字消息发送到服务器端

上传音频,则单独走TCP通道,一个两秒的录制音频,客户端录制完毕,分为两块传输,一块最大1.5K左右,服务端响应一条数据通知确认收到。共三次数据传输。

音频和纯文字信息一致,都是走TCP长连接,客户端发送,服务器端确认。

以上所述是小编给大家介绍的微信开发协议小结,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • 深入讲解SpringBoot Actuator是什么

    深入讲解SpringBoot Actuator是什么

    Spring Boot Actuator提供了生产上经常用到的功能(如健康检查,审计,指标收集,HTTP跟踪等),帮助我们监控和管理Spring Boot应用程序。这些功能都可以通过JMX或HTTP端点访问
    2023-01-01
  • 解析Java中的Field类和Method类

    解析Java中的Field类和Method类

    这篇文章主要介绍了Java中的Field类和Method类,是Java入门学习中的基础知识,需要的朋友可以参考下
    2015-12-12
  • 一文带你全面了解Java Properties类

    一文带你全面了解Java Properties类

    Properties是JDK1.0中引入的java类,目前也在项目中大量使用,主要用来读取外部的配置,那除了这个,你对它其他的一些api也了解吗? 你了解它是怎么实现的吗? 如果不清楚的话,就通过本篇文章带你一探究竟
    2022-09-09
  • 基于SpringBoot和Dify实现流式响应输出

    基于SpringBoot和Dify实现流式响应输出

    这篇文章主要为大家详细介绍了如何基于SpringBoot和Dify实现流式响应输出效果,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下
    2025-03-03
  • java实现在一张大图片上添加小图及文字

    java实现在一张大图片上添加小图及文字

    这篇文章主要介绍了java实现在一张大图上添加小图及文字,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 学习Java之IO流的基础概念详解

    学习Java之IO流的基础概念详解

    这篇文章主要给大家介绍了Java中的IO流,我们首先要搞清楚一件事,就是为什么需要IO流这个东西,但在正式学习IO流的使用之前,小编有必要带大家先了解一下IO流的基本概念,需要的朋友可以参考下
    2023-09-09
  • 正确结束Java线程的方法

    正确结束Java线程的方法

    线程的启动很简单,但用户可能随时取消任务,怎么样让跑起来的线程正确地结束,这是今天要讨论的话题。下面小编来和大家一起学习一下吧
    2019-05-05
  • Java子线程调用RequestContextHolder.getRequestAttributes()方法问题详解

    Java子线程调用RequestContextHolder.getRequestAttributes()方法问题详解

    这篇文章主要介绍了Java子线程调用RequestContextHolder.getRequestAttributes()方法问题处理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-09-09
  • Java 实战项目锤炼之在线美食网站系统的实现流程

    Java 实战项目锤炼之在线美食网站系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+SSM+jsp+mysql+maven实现一个在线美食网站系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • JavaWeb项目中classpath路径详解

    JavaWeb项目中classpath路径详解

    今天小编就为大家分享一篇关于JavaWeb项目中classpath路径详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论