分享好友 行情首页 行情分类 切换频道
实现微信小程序编译和运行环境系列 (核心篇二)
2024-12-29 23:36  浏览:52

在上文中我们有点到小程序开发者工具里面的消息是通过 websocket 协议发送和接受处理的,当然这个不是凭空而说的,是在小程序的逻辑层 appservice.js 源码里面有代码表明的,至于它的消息格式还有一部分我没有列出来,比如它的数据分析和上报他们自己服务器的一些消息格式可以先需要关注。

下面还是先给大家展示一下流程找到 appservice.js 源码文件

可以看到它的链接地址,数据发送和接收的部分代码,由于图片尺寸问题我折叠了部分代码,大家可以自己去细看看。

我还是先简述一些 webstocket 的知识,可能部分同学对这方面不是很熟悉。细节 webstocket 内容不会在本文描述,后期会写一篇专门的介绍。

websocket 是什么

其实这些内容我们通过谷歌搜索可以查阅很多材料,但有没有真正理解可以在自己项目里进行灵活设计运用还是只是简单使用文档 api,还是要靠自己多探索思考一些。

下图为:

可以理解为:WebSocket 协议允许在运行于受控环境中的不受信任代码的用户代理与已选择从该代码进行通信的远程主机之间进行双向通信。简单点描述就是:客户端和服务器之间存在持久连接,而且双方都可以随时随地相互发送数据

为什么用 websocket

一项新规范或者一门新技术的诞生肯定是为了解决或者完善前面方案的不足,这样才能一直进步下去。

在没有 websocket 之前我们采用 http 用的很好,但是随着一些应用的要求像聊天 股票 游戏 这种对实时性数据要求高的系统,才用 HTTP 协议发送数据的话只能有客户端单方面进行请求,服务端响应获取最新数据,如果服务端的数据变换很快比如股票的信息,因此只能定时去请求,就出出现效率低 浪费资源而且数据还不实时同步的情况,为了解决这些问题通过研究 websocket 协议就闪亮登场了。

websocket 具备的一些优点:

如何使用 websocket

这个点比较广泛一个新方案新技术的产生都会经过由浅入深的过程发展,主要看大家门自己的具体设计和使用了,下面一些链接知识点可以让大家先了解这个概念和基础使用,本章节不在这里衍生更多 websocket 相关内容。

(大家如果想对 websocket 深入学习感兴趣 希望可以关注我后面的 websocket 专栏文章)

这个是一个比较简单的可以在线看效果的网页

如果有同学希望自己动手试试的话,我在自己的 github 仓库写了一个最简化的服务端和客户端的案例,一共 10 多行代码比较方便,有兴趣的朋友可以看下

执行 index.js 后效果如下:

<img src=https://cloud.tencent.com/developer/article/"http://cdn.xuedingmiao.com/mp-runtime/mp-rt-4-4.png" style="width: 100%; display: block;">

下面的内容我会结合在实现这个小程序运行环境里面的对于 websocket 的一些运用设计和部分代码展示。

我们回到主题先在源码 appservice.js 的发送和接收的地方添加了一些日志保存,这里一定要彻底退出工具进程在打开不然是不起作用的。

然后我们重新进入开发者工具打开一个小程序项目,我打开的是一个官方的云开发项目例子可以看到:

通过这个图我们可以看出一些信息先给大家简单介绍一下:

数据发送部分

可以观察到一些字段和对象(这个是一个普通云开发项目默认打开的时候的状态,不做任何操作是个例子对象是比较复杂的)

看到这个 api operateWXData 可能大家不是很熟悉,因为这个 api 微信没有对外的是内部使用的,这个不是我们现在要讲的重点,我们现在要描述的是 webstocket 相关的,至于 api 的实现会在下文如何实现小程序对外 api 来描述讲解,我们在这里只要知道他的消息传输格式就可以了。

数据接收部分

对比可以看出在上面核心篇里面讲的内容:

APPSERVICE_INVOKE 的消息类型是 service 层发送给 service 进行接收处理

代码实现浏览器运行环境 websocket 服务通信设计

这边采用 node 方式来启动的服务先创建一个服务端:

创建客户端链接发送和接收:

上面两个类文件就是比较简单的服务和客户端的创建。这里创建了一个 client 集合类:

新添加的一个 addSocketClient 方法

表示如果 SocketClient 不存在,则根据 ws 创建一个新的 SocketClient,否则,将旧的 ws 替换为新的 ws,这样消息队列中的消息就可以被替换后立即发送到新的 ws,保证可用性。

getSocketClient 方法

调用这个函数总是可以返回一个 SocketClient 实例,以便用户可以在任何时候发送消息。

上文点主要关注的就是消息的格式内容组成和几个接收方和发送方的顺序,下篇我通过几个大家常用的对外 api,用具体代码实现来给大家描述下具体过程。

本文作者:风逝

作者公众号:小风以北

    以上就是本篇文章【实现微信小程序编译和运行环境系列 (核心篇二)】的全部内容了,欢迎阅览 ! 文章地址:http://w.yusign.com/quote/8281.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 述古往 http://w.yusign.com/mobile/ , 查看更多   
最新新闻
手机特别卡怎么办
在现代生活中,手机已经成为我们不可或缺的伙伴。然而,随着使用时间的增长,不少用户会遇到手机变得特别卡的问题。这不仅影响了
抖音外链建设规划与执行方案100
外链建设目标* 提高网站在抖音平台的可见度和影响力* 为网站获取高质量的流量* 提升网站的搜索引擎排名外链建设策略1. 分析竞争
李丁夫最新任命,引领科技革新重塑生活体验领袖
李丁夫最新任命,将引领科技潮流并重塑生活体验。他的上任标志着新一轮科技革新和优质生活体验的开始,致力于将最新的科技应用于
淘宝运营
岗位职责:1、负责淘宝店铺的日常运营,熟悉天猫、C店的运营环境、交易规则、分析店铺销售目标并落实执行;2、负责天猫店铺推广
实时更新:呼和浩特直达到海东汽车托运2024讲信誉+排名一览
  呼和浩特到海东专线物流、呼和浩特到海东物流专线、呼和浩特到海东回头车、绥化回程货车、大型机器设备运输。我们的司机具备
梦幻西游:盘点游戏中的热门召唤兽——人形篇
  自梦幻西游诞生以来,人气最高的召唤兽就是人型宠。时至今日,这个群体已经太过庞大,小编整理过后,将其分解为人形篇、精怪
医保管理精细化 医院有何“妙招”
医保制度改革深化,对医院医保管理的要求也随之提档升级。整合医、教、科等业务系统和人、财、物等资源,推动医院运营管理精细化
白天黑夜宝宝巴士小百科
白天黑夜宝宝巴士小百科,一般又称白天黑夜app。
考研教育/建模/原画/插画/考公等教育投放b站广告效果解析
2022年08月26日陈建贵100资深效果广告开户代运营公司,小红书、B站信息流广告,达人探店种草,抖音千川,腾讯视频号等广告开户代
排名展现:重庆男科医院排行榜前五的男科医院-重庆治疗早泄哪家医院好
排名展现:重庆男科医院排行榜前五的男科医院-重庆治疗早泄哪家医院好。重庆男科医院排名:1、重庆红楼医院,2、重庆红楼医院男
本企业新闻
推荐企业新闻
发表评论
0评