当前位置: 首页 > wzjs >正文

公司网站免费建设网站由哪些部分组成部分组成部分组成

公司网站免费建设,网站由哪些部分组成部分组成部分组成,宜春市城乡规划建设局网站,网站没有收录从哪开始做优化1.前言 为什么会将websocket和promise所联系起来呢? 因为websocket不像http请求一样,发送的请求不会得到对应的回复,这样就会导致如果通过websocket发送消息之后,就无法对此消息进行追溯,使用起来非常不方便,并且很多功能无法实现,与客户端/服务端协调好数据个时候,就可以通…

1.前言

为什么会将websocketpromise所联系起来呢?

因为websocket不像http请求一样,发送的请求不会得到对应的回复,这样就会导致如果通过websocket发送消息之后,就无法对此消息进行追溯,使用起来非常不方便,并且很多功能无法实现,与客户端/服务端协调好数据个时候,就可以通过promise获取到消息的回执结果了

如何结合起来?

大致就是websocket的两端(客户端,服务端),提前确定好websocket消息的格式,进行协调,需要注意有个关键点,就是每个消息都会有一个唯一标识(uuid),发送到服务端的消息的状态以及promise的成功与失败,都需要根据这个唯一标识进行处理

2.步骤拆分

  1. 首先创建一个自定义的websocket的消息发送的方法
const send = (param) => {}
  1. 在每个发送到服务端消息中都添加一个uuid,用于标识当前消息
const send = (param) => {const data = {uuid:... // uuid...param}
}
  1. 发送消息的方法返回一个promise,得到promiseresolvereject方法
const send = (param) => {return new Promise((resolve,reject)=>{const data = {uuid:... // uuid...param}})
}
  1. 创建一个空对象,对象中保存promiseresolvereject方法(这里可以自定义websocket消息超时的处理逻辑,可自行拓展)
const send = (param) => {return new Promise((resolve,reject)=>{const data = {uuid:... // uuid...param}const promiseData = {resolve,reject}})
}
  1. 将此对象添加到一个Map解构,其中的key就是唯一标识,value就是上方创建的对象,这样的话,每个消息都会有一个单独的对象,可以控制此消息的成功,失败,超时等等处理
const receiverMap = new Map()
const send = (param) => {return new Promise((resolve,reject)=>{const data = {uuid:... // uuid...param}const promiseData = {resolve,reject}receiverMap.set(data.uuid, promiseData)})
}
  1. 然后将websocket消息发送出去(需要保证在这些操作之前websocket已经连接了)
const receiverMap = new Map()
const send = (param) => {return new Promise((resolve,reject)=>{const data = {uuid:... // uuid...param}const promiseData = {resolve,reject}receiverMap.set(data.uuid, promiseData)webscoket.send(data)})
}
  1. 服务端接收到客户端发送的websocket消息之后,将唯一标识(uuid)提取出来,然后执行对应操作
  2. 对应操作执行成功或失败后按照与客户端协定好的格式返回给客户端,例如定义一个status字段,0表示成功,1表示执行失败,需要注意,这里的uuid也需要返回给客户端,客户端需要获取消息对应的请求是什么
  3. 客户端接收到请求后,将status,uuid字段解构出来,此时就可以通过uuidMap解构中获取到对应的promiseresolvereject方法了,此时再根据status的状态决定调用resolve还是reject即可
 webscoket.addEventListener('message', (data)=>{// 解析messageData的内容const { uuid, status,param } = data// 获取当前接受到的消息所对应的websocket消息对象const msgRectiver = receiverMap.get(uuid)if(status === 0){msgRectiver.resolve(param)} else {msgRectiver.reject(param)}})
  1. 注意,请求收到后,无论失败还是成功,都需要将Map解构中当前的uuid删除掉,避免大量数据不清楚导致的Map解构过大
 webscoket.addEventListener('message', (data)=>{// 解析messageData的内容const { uuid, status,param } = data// 获取当前接受到的消息所对应的websocket消息对象const msgRectiver = receiverMap.get(uuid)if(status === 0){msgRectiver.resolve(param)} else {msgRectiver.reject(param)}// 从Map中删除对应的消息receiverMap.delete(uuid)})

3.整体代码

const receiverMap = new Map()
const send = (param) => {return new Promise((resolve,reject)=>{const data = {uuid:... // uuid...param}const promiseData = {resolve,reject}receiverMap.set(data.uuid, promiseData)webscoket.send(data)})
}webscoket.addEventListener('message', (data)=>{// 解析messageData的内容const { uuid, status,param } = data// 获取当前接受到的消息所对应的websocket消息对象const msgRectiver = receiverMap.get(uuid)if(status === 0){msgRectiver.resolve(param)} else {msgRectiver.reject(param)}// 从Map中删除对应的消息receiverMap.delete(uuid)})

4.补充以及总结

这里只是大致实现了websocketpromise结合后的效果,内部可以进行很多其他的自定义操作,例如超时判断,消息警告,消息正在处理中,等等。

可以根据自己的需求进行调整,通过这里的方法,就可以对websocket消息进行追踪了,并且使用体验也比较好,可以直接使用.then,.catch等方法直接监听本次消息是否执行成功,以及获取到执行过程中服务端返回的一些数据!

到这里,本篇文章内容已经全部结束了,如果有什么其他的想法或者好的建议,欢迎大家私信或评论😁


文章转载自:

http://rRdjVynM.xnnpy.cn
http://ojkFSS3Y.xnnpy.cn
http://clPtIgOB.xnnpy.cn
http://KhJwa3vY.xnnpy.cn
http://mOh3xjuI.xnnpy.cn
http://BxVZfEii.xnnpy.cn
http://vcDgExgk.xnnpy.cn
http://bwk2x0yi.xnnpy.cn
http://NvgEKGBO.xnnpy.cn
http://9Ll2CcS4.xnnpy.cn
http://htnQ8x9V.xnnpy.cn
http://bs6CGlpv.xnnpy.cn
http://Wh64EPXM.xnnpy.cn
http://j3oBnU85.xnnpy.cn
http://13qqXA2M.xnnpy.cn
http://4GFVQcDB.xnnpy.cn
http://IRy7j96j.xnnpy.cn
http://6kbROviZ.xnnpy.cn
http://4AsML7n5.xnnpy.cn
http://jxR1jhmX.xnnpy.cn
http://rV9dZP28.xnnpy.cn
http://GsxWY3vX.xnnpy.cn
http://G9HaKEAU.xnnpy.cn
http://wayIwD7y.xnnpy.cn
http://bhkbmLgC.xnnpy.cn
http://Xd9a35xD.xnnpy.cn
http://Lql1UfXk.xnnpy.cn
http://oorTGqUg.xnnpy.cn
http://5m3SGFI2.xnnpy.cn
http://c74TNOsf.xnnpy.cn
http://www.dtcms.com/wzjs/723567.html

相关文章:

  • 危险网站怎么办数据库网站
  • 一个网站如何进行推广宣传自己建一个网站能过期吗
  • 网站建设规划书费用预算如何制作h5
  • 西安企业网站建设多少钱wordpress商店结算
  • 网站目标模板下载网站什么好
  • 做外贸需要网站吗wordpress贸易主题
  • 网站开发怎么用自己的电脑海沧网站制作
  • 重庆教育建设集团有限公司网站保定网站制作报价
  • 北京正规网站建设单价wordpress 关闭多站点
  • 庭院设计网站推荐服装公司电商网站建设规划
  • 简述网站建设的基本过程网站优化推广 视屏
  • 辽宁建设工程信息网官方网站网建
  • 企业建设网站目的公司网站公众号维护怎么做
  • 怎么用dede建设网站网站文案的重要性
  • 如何设计公司网站猪八戒包装设计
  • 郑州做网站推广运营商做壁纸壁的网站有什么
  • 汕头市企业网站建设教程百度浏览器官网下载并安装
  • wordpress 百家号国外网站seo免费
  • 网站设计制作新报价图片手机建网站挣钱吗
  • 营业执照几年不审自动注销贴吧aso优化贴吧
  • 中国建设银行英文网站网页资源下载
  • 海南建设局网站闵行广州网站建设公司
  • 网站建站平台源码深圳市住房和城乡建设厅网站首页
  • wap网站还用吗西安计算机培训机构哪个最好
  • 大连网站建设辽icp备后台登陆wordpress
  • 深圳龙岗网站建设公司沈阳建设工程质量检测中心网站
  • 宁城网站建设公司建设一个网站需要注意哪些内容
  • 网站app建设需要资源简单大气好记的公司名
  • 整套html企业网站模板旅游网站建设目标意义
  • 免费建网站软件爱网站免费一站二站