目录
- WebSocket网络通信执行流程
- 相关概念
- 执行流程
WebSocket网络通信执行流程
WebSocket协议:通过单个TCP连接在客户端和服务器之间建立全双工双向通信通道。
WebSocket
对象:提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的 API。
相关概念
1、客户端创建WebSocket对象,其中url表示的就是WebSocket服务端地址
var websocket = new WebSocket(url);
2、@ServerEndpoint
注解
主要是将加入该注解的类定义成一个websocket服务器端, 该注解有个value
属性值,客户端可以通过这个value属性值,也就是URL来连接到WebSocket服务器端
3、(new WebSocket).session.getBasicRemote().sendText(message);
- Session对象,代表每个客户端websocket对象与WebSocket服务端成功连接的会话
4、@OnOpen
注解
客户端创建的websocket对象与WebSocket服务端成功建立连接后,会触发服务端@OnOpen注解修饰的方法
- 一般常用来执行“广播消息”操作
5、@OnMessage
注解
客户端websocket对象调用send
方法时,会触发与之连接的服务端,调用服务端@OnMessage注解修饰的方法
- 一般常用来一对一发送信息
执行流程
1、创建WebSocket对象初始化连接,该对象成功创建之后,对象就代表着与WebSocket服务端之间的TCP连接
2.1、创建成功,触发onopen事件
2.2、创建失败,触发error事件
2.3、断开连接,触发close事件
2.4、服务端向客户端发送消息,触发message事件
2.5、客户端向服务端发送消息,客户端websocket对象调用send事件
3、具体执行流程如下:(聊天室为例)
广播消息
用户成功登录聊天网站(客户端创建WebSocket对象)–>触发WebSocket服务端@OnOpen
注解修饰的方法(在该方法中编写广播消息:”某某用户成功上线啦!“)–>WebSocket服务端(也就是@OnOpen注解修饰的方法中)封装消息,调用(new WebSocket).session.getBasicRemote().sendText(message);
向与该服务端连接的所有客户端websocket对象发送广播消息,触发客户端websocket对象的message
事件进行消息接收
一对一发送消息
用户成功登录客户端创建websocket对象,websocket对象调用send事件–>触发WebSocket服务端@OnMessage
注解修饰的方法(在该方法编写定向消息:”某某,好久不见,最近好吗?“)–>WebSocket服务端(也就是@OnMessage注解修饰的方法中)接收封装发送方的消息,调用(new WebSocket).session.getBasicRemote().sendText(message);
向指定接收方法发送消息,之后触发接收方客户端websocket对象的message事件进行接收