网站建设找星火龙,新网域名注册官网,asp c 网站开发,新网站建设 英文翻译【课程简介】
越来越多的系统都有消息推送的功能#xff0c;如聊天室、邮件推送、系统消息推送等#xff1b;
要实现消息推送就需要服务端在数据有变化时主动推送消息给客户端#xff0c;本次课程将带大家使用websocket实现消息推送。
【主讲内容】
1.方法#xff1a;如…【课程简介】
越来越多的系统都有消息推送的功能如聊天室、邮件推送、系统消息推送等
要实现消息推送就需要服务端在数据有变化时主动推送消息给客户端本次课程将带大家使用websocket实现消息推送。
【主讲内容】
1.方法如何快速上手新项目 2.技术消息推送方案websocket原理 3.实战实现案例网页版聊天室
【课程详情】
Java后端项目实战--在线聊天交友
消息推送常用方式介绍 SSEserver-sent event服务器发送事件
SSE在服务器和客户端之间打开一个单向通道
服务端响应的不再是一次性的数据包而是text/event-stream类型的数据流信息
服务器有数据变更时将数据流式传输到客户端 WebSocket是一种在基于TCP连接上进行全双工通信的协议 说明
全双工Full Duplex允许数据在两个方向上同时传输。
半双工Half Duplex允许数据在两个方向上传输但是同一个时间段内只允许一个方向上传输。
原理解析 请求数据
GET ws://localhost/chat HTTP/1.1
Host: localhost
Connection: Upgrade
Upgrade: websocket
Sec-WebSocket-Version: 13
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ
Sec-WebSocket-Extensions: permessage-deflate
响应数据
HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbKxOo
Sec-WebSocket-Extensions: permessage-deflate
websocket API
客户端【浏览器】API
websocket对象创建
let ws new WebSocket(URL); 格式协议://ip地址/访问路径
协议协议名称为 ws
websocket对象相关事件 websocket对象提供的方法 客户端【浏览器】API 服务端 API
Tomcat的7.0.5 版本开始支持WebSocket,并且实现了Java WebSocket规范。
Java WebSocket应用由一系列的Endpoint组成。Endpoint 是一个java对象代表WebSocket链接的一端对于服务端我们可以视为处理具体WebSocket消息的接口。
我们可以通过两种方式定义Endpoint:
第一种是编程式 即继承类 javax.websocket.Endpoint并实现其方法。
第二种是注解式, 即定义一个POJO, 并添加 ServerEndpoint相关注解。
Endpoint实例在WebSocket握手时创建并在客户端与服务端链接过程中有效最后在链接关闭时结束。在Endpoint接口中明确定义了与其生命周期相关的方法 规范实现者确保生命周期的各个阶段调用实例的相关方法。生命周期方法如下 服务端如何接收客户端发送的数据呢 编程式
通过添加 MessageHandler 消息处理器来接收消息
注解式
在定义Endpoint时通过OnMessage注解指定接收消息的方法
服务端如何推送数据给客户端呢
发送消息则由 RemoteEndpoint 完成 其实例由 Session 维护。
发送消息有2种方式发送消息
通过session.getBasicRemote 获取同步消息发送的实例 然后调用其 sendXxx()方法发送消息
通过session.getAsyncRemote 获取异步消息发送实例然后调用其 sendXxx() 方法发送消息 项目实现---在线聊天室实现
需求通过websocket实现在线聊天室 流程分析 消息格式
客户端 -- 服务端 {toName:张三,message:你好}
服务端 -- 客户端
①系统消息格式{system:true,fromName:null,message[李四,王五]}
②推送给某一个用户的消息格式{system:false,fromName:张三,message你好}
代码实现
引入坐标 编写配置类扫描添加有ServerEndpoint注解的 Bean 编写配置类用于获取 HttpSession 对象
在 ServerEndpoint 注解中引入配置器