javawebsocket客户端断线重连_前端提升,不玩虚的!让你轻
松理解啥是websocket
⼤家好,欢迎踏⼊野⽣程序猿的⽣存之道,我是你们的⽼朋友⼤猿!
今天和⼤家聊聊啥是websocket。我们先看两个场景:
场景⼀:
相信⼤家浏览⽹页的时候会注意到,有⼀些⽹站是有的,点击后会打开⼀个聊天框,能够和⼯作⼈员进⾏即时通讯,就如同⽹页版
的QQ⼀样。
场景⼆:实时监控
我们在⼀些办事⼤厅中,经常看到有⼀些监控⼤屏,上⾯布满了各种各样的数据,⽽且这些数据都是实时变化的,你刚做完⼀笔业务,屏幕
上的数字就⽴马加⼀了。
这些场景其实⽤的就是websocket技术。
什么是websocket?
相信⼤家对http协议都不陌⽣了,你打开⼀个⽹页,加载⼀个图⽚,点击⼀个按钮,这些都是通过http协议实现的。http协议简单的说就是
⼀次请求(Request)和⼀次响应(Response),就如同你在和10086发短信,你发⼀条,它回⼀条,你不发,它不会主动回(它偶尔发⼴告不
算)。
⽽websocket是基于http协议的,但⼜不太⼀样,它的感觉就像是你在和朋友打电话,谁都可以主动说话,⽽且⼀⽅说话后,另⼀⽅并不是
⾮要有回应。
有同学说,⼤猿,你BB了那么多,你说的那俩场景,我⽤Ajax轮询不照样能实现吗?这位同学,请看下⾯这两个对话:
Ajax轮询:
客户端:⼤哥,在吗?服务器:在客户端:有新的数据吗?服务器:没有……过了⼀会……客户端:⼤哥,在吗?服务器:在客户端:有新的数据吗?服务器:没有…
websocket:
客户端:⼤哥,在吗?服务器:在客户端:我请求和你保持通讯,有新消息请及时告诉我服务器:好的……过了⼀会……服务器:来新数据了,拿好客户端:好勒!我
可以看到,Ajax轮询其实是⾮常浪费资源的,因为如果你设置的轮询时间短,那⼤部分请求可能都没有数据,⽽如果你设置轮询时间长,那
就⽆法满⾜实时性的要求。
客户端的实现
在客户端中,我们需要创建⼀个websocket实例,并实现⼀个信息处理的⽅法,来接收并处理服务器发来的信息。前端websocket怎么用
创建websocket实例:
var ws = new WebSocket("ws://localhost:8080/myWebSocket");
执⾏完这句代码,客户端便会开始尝试与服务器建⽴连接了。其中这个url是服务端地址,后⾯的章节会讲到。
实现连接建⽴完成时的监听⽅法:
onopen会在连接建⽴成功后执⾏,这⾥⾯可以写⼀些初始化逻辑,⽐如⾝份的校验。校验⾝份就需要向服务端发消息,怎么发的?继续往下看。
向服务端发消息:
ws.send("这⾥是消息体");
简单吧,⼀⾏代码就⾏。通常我们会约定好消息体的格式(通常是个Json字符串),以⽅便服务端进⾏处理,就⽐如你在⽹页QQ上发⽂本,发表情,发图⽚,单聊,聊,对服务器来说处理肯定不⼀样。
接收并处理服务端发来的消息:
凡是服务器发来的消息,都会触发onmessage⽅法,⽅法⼊参就是消息体,在这⾥⾯只需按照约定的消息格式进⾏相应的业务处理就可以了。
异常处理:
有时候,因为⽹络等原因,websocket连接可能会断掉,这时就会触发onerror和onclose⽅法。注意,在连接出错时,会先触发onerror ⽅法,然后触发onclose⽅法。那么这两个⽅法的意义是什么呢?最常⽤的就是让我们实现断线重连。
可以看到,断线重连的逻辑也很简单,只需重新new⼀个就⾏啦~
好了⼩伙伴们,你们学会了吗?下⼀节我会详细介绍websocket的服务端实现,点我头像能学习更多实⽤的开发⼩技巧,别忘了点关注哦~下⼀节来了:千呼万唤始出来,websocket后台篇

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。