Spring Boot中的WebSocket 当前滚动
须弥零一SpringBoot中的WebSocket很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTT
很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTTP请求,然后由服务器返回最新的数据给客户端的浏览器。这种传统的模式带来很明显的缺点,即浏览器需要不断的向服务器发出请求,然而HTTP请求可能包含较长的头部,其中真正有效的数据可能只是很小的一部分,显然这样会浪费很多的带宽等资源。
在这种情况下,HTML5定义了WebSocket协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。
(资料图)
简介WebSocket是一种在单个TCP连接上进行全双工通信的协议。
WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。
特点•较少的控制开销。相对于HTTP请求每次都要携带完整的头部,开销显著减少了。
•更强的实时性。由于协议是全双工的,所以服务器可以随时主动给客户端下发数据。
•保持连接状态。Websocket需要先创建连接,是一种有状态的协议,之后通信时可以省略部分状态信息。而HTTP请求可能需要在每个请求都携带状态信息(如身份认证等)。
•更好的二进制支持。Websocket定义了二进制帧,相对HTTP,可以更轻松地处理二进制内容。
•可以支持扩展。Websocket定义了扩展,用户可以扩展协议、实现部分自定义的子协议。如部分浏览器支持压缩等。
•更好的压缩效果。相对于HTTP压缩,Websocket在适当的扩展支持下,可以沿用之前内容的上下文,在传递类似的数据时,可以显著地提高压缩率。
在SpringBoot项目中创建WebSocket Server项目依赖(Maven)WebSocket服务4.0.0 cn.jeremysong demo 1.0 org.springframework.boot spring-boot-starter-parent 3.0.3 org.springframework.boot spring-boot-starter-websocket 3.0.3
importorg.springframework.context.annotation.Bean;importorg.springframework.stereotype.Component;importorg.springframework.web.socket.server.standard.ServerEndpointExporter;/***ServerEndpointExporter作用**这个Bean会自动注册使用@ServerEndpoint注解声明的websocketendpoint**/@ComponentpublicclassWebSocketConfig{@BeanpublicServerEndPointExporterserverEndPointExporter(){returnnewServerEndPointExporter();}}
importlombok.extern.slf4j.Slf4j;importorg.springframework.stereotype.Component;importjavax.websocket.OnClose;importjavax.websocket.OnMessage;importjavax.websocket.OnOpen;importjavax.websocket.Session;importjavax.websocket.server.PathParam;importjavax.websocket.server.ServerEndpoint;importjava.io.IOException;importjava.util.concurrent.ConcurrentHashMap;@Slf4j@Component@ServerEndpoint("/websocket/{name}")publicclassWebSocket{privateSessionsession;privateStringname;privatestaticConcurrentHashMap使用JavaScript创建WebSocket ClientWebSocket客户端webSocketSet=newConcurrentHashMap<>();@OnOpenpublicvoidonOpen(Sessionsession,@PathParam(value="name")Stringname){this.session=session;this.name=name;webSocketSet.put(name,this);}@OnClosepublicvoidonClose(){webSocketSet.remove(this.name);}@OnMessagepublicvoidonMessage(Stringmessage){log.info("{}send{}",this.name,message);}/***群发*@parammessage消息内容*/publicvoidgroupSending(Stringmessage){for(Stringname:webSocketSet.keySet()){try{webSocketSet.get(name).session.getBasicRemote().sendText(message);}catch(IOExceptione){e.printStackTrace();}}}/***指定发动消息*@paramname指定的客户端名*@parammessage消息内容*/publicvoidappointSending(Stringname,Stringmessage){try{webSocketSet.get(name).session.getBasicRemote().sendText(message);}catch(IOExceptione){e.printStackTrace();}}}
letwebsocket=null;if("WebSocket"inwindow){websocket=newWebSocket("ws://localhost:8888/websocket/cli-1");websocket.onopen=function(){console.log("连接成功");};websocket.onclose=function(){console.log("退出连接");};websocket.onmessage=function(event){console.log("收到消息:"+event.data);};websocket.onerror=function(){console.log("连接出错");};//MDNExamplewebsocket.addEventListener("open",function(event){websocket.send("HelloServer!");});websocket.addEventListener("message",function(event){console.log("Messagefromserver",event.data);});websocket.addEventListener("error",function(event){console.log("WebScoketerror:",event);});}window.onbeforeunload=function(){//页面关闭时关闭WebSocket连接websocket.close(1000);};在Chrome console中测试
执行如下命令时可以在Server端添加日志输出和debug观察交互现象。
>ws1=newWebSocket("ws://localhost:8888/websocket/name1");>ws1.send("Sendmessagetoserver!Iamname1");>ws2=newWebSocket("ws://localhost:8888/websocket/name2");>ws2.send("Sendmessagetoserver!Iamname2");>ws1.close(1000);>ws2.close(1000);参考
•WebSocket - MDN:
https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket•CloseEvent - MDN:
https://developer.mozilla.org/zh-CN/docs/Web/API/CloseEvent#status_codes欢迎关注我的公众号“须弥零一”,原创技术文章第一时间推送。
关键词:
[ 相关文章 ]
须弥零一SpringBoot中的WebSocket很多网站为了实现推送技术,所用的技术都是轮询。轮询是在特定的时间间隔(如每1秒),由浏览器对服务器发出HTT
第一步。首先,第一步。我们打开软件,找到界面中的选项后,点击打开选项设置界面。2 打开选项界面后,我们在界面左侧的选项中
税务稽查是指由税务稽查部门依法组织实施的,是税务机关代表国家依法对纳税人的纳税情况进行检查监督的一种形式,对纳税人以及扣
中建海峡“建证未来”公益支教团走进厦门市翔安区萃英小学
上交所2023年3月9日交易公开信息显示,纳睿雷达因属于有价格涨跌幅限制的日换手率达到30%的前五只证券而登上龙虎榜。
1、袅[袅]拼音:niǎo繁体:嫋部首:衣部首笔划:6字意五行:土简体笔划:10拼音输入:niao五
随着天气转暖,我国早稻育秧、春小麦播种加快推进;全国早稻育秧近两成,春耕生产开局良好。农业农村部最新农情调度显示,目前全
1、第二部的结局是:银尘死了,却救出l了吉尔伽美什,麒麟成了0度王爵,可以忍受住白银祭司的黑暗灵魂和黄金瞳孔的毒性。2、《临界爵迹》还没
长沙晚报掌上长沙3月9日讯据国家统计局消息3月9日,国家统计局发布了2023年2月份全国CPI(居民消费价格指数)和
1、歌曲:《兄弟》作曲:陈羽凡编曲:宫永治郎、JiroMiyana作词:羽泉演唱:羽泉歌词:桃园里,三位志士相遇彼此志
如今的一线手机厂商,不带上几款折叠屏产品,就无法在市场上展现自己的R&D实力。然而,对于这样的产品,小米自推出MIX
查营业执照的方式如下:1、百度搜索全国企业信用公示系统,搜索页面上就能出现官网,点击进入即可;2、进入到国家企业信用信息公示系统后,输
1、,不可以,现是电子客票,预订好后提前两个小时到机场。2、到机场拿身份证在航司柜台或自动值机台换登机牌过安检即可!若报
1、集群,发音c4。是个形声字,从竹子到族音。原意是竹子丛生。也可以用来表示蚕山。003010等。有相关记录。2、“丛”
新华网记者马若虎闫雨昕“我们目光之所及是星辰大海,但我们走过的每一步路都是脚踏实地。”7日下午举行的第二场“代表通道”采访活动中,全国
1、海水密度一般在1 02~1 07之间,它取决于温度、盐度和压力(或深度)。2、在低温、高盐和深水压力大的情况下,海水
今年全国两会,“数字经济”在政府工作报告中再被提及,这已是“数字经济”第6年出现在政府工作报告中,报告指出,“大力发展数字经济,提升常
微晶玻璃(CRYSTOEandNEOPARIES)又称微晶玉石或陶瓷玻璃。是综合玻璃,是一种外国刚刚开发的新型的建筑材料,它的学名叫做玻璃水晶。微晶玻璃和我
“到点了就来食堂吃,不仅菜品丰富、老年人吃饭有折扣,还能和老伙伴们唠家常!”自打社区的“幸福餐桌”开张,中午11点,家住钱塘社区金基晓庐
1、凉拌苦菊。苦菊:具有抗菌、解热、消炎、明目等作用。苦菊味略苦,颜色碧绿,可炒食或凉拌,是清热去火的美食佳品。原料:苦菊两颗,熟芝麻50克,
[ 相关新闻 ]
Copyright 2015-2022 太平洋医院网 版权所有 备案号:豫ICP备2022016495号-17 联系邮箱:93 96 74 66 9@qq.com