首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
java面试题基础
冒泡排序算法
插入排序算法
归并排序算法
二叉树排序算法
基数排序
选择排序
堆排序
快排
TCP-三次握手
HTTP协议
WebSocket
Mysql架构
Innodb与Myisam数据库引擎
事务隔离级别
面向对象(OOP)
异常
泛型
Object
StringBuilder
代理
注解
java面试题基础二
HashMap
ConcurrentHashMap
BlockingQueue
线程
Volatile
AtomicInteger
Synchronized
Java虚拟机架构
类加载器
内存模型
垃圾回收
Mybatis面试题
IOC
高并发系统设计
分布式缓存
分布式锁
分布式事务
消息队列
当前位置:
首页>>
技术小册>>
Java面试指南
小册名称:Java面试指南
### WebSocket技术简介 WebSocket技术是一种基于TCP/IP协议的通信协议,用于在Web浏览器和Web服务器之间进行双向通信。它提供了一种用于创建和管理WebSocket连接的API,可以通过该连接发送和接收数据。与HTTP协议相比,WebSocket协议具有许多优点. 在建立WebSocket连接之前,首先需要通过HTTP协议进行握手,这个过程称为"握手协议"。在握手协议过程中,客户端向服务器发送WebSocket协议的请求,并等待服务器的响应。如果服务器同意建立WebSocket连接,则返回一个101状态码。一旦连接建立,WebSocket客户端和服务器之间就可以通过该连接进行双向通信。 在建立WebSocket连接之后,客户端和服务器之间的通信是全双工的,这意味着两端都可以随时主动发送和接收数据。在WebSocket协议中,数据是通过"帧"的形式进行传输的。帧包括了一些控制信息和数据,用于在连接上发送和接收消息。与HTTP协议相比,WebSocket的控制开销较少,延迟较低,实时性更强,并且可以保持连接状态. 总之,WebSocket技术是一种在Web浏览器和Web服务器之间进行双向通信的协议,具有较少的控制开销、更强的实时性、保持连接状态和更好的二进制支持等优点。在建立WebSocket连接之前,需要通过HTTP协议进行握手协议,然后才能建立WebSocket连接进行双向通信. ### 代码示例 **JavaScript 示例:** ```javascript // 创建 WebSocket 对象 const ws = new WebSocket('wss://example.com/socket'); // 在连接成功时触发 ws.onopen = () => { console.log('WebSocket 连接成功'); // 向服务器发送数据 ws.send('Hello, Server!'); }; // 在接收到服务器数据时触发 ws.onmessage = (event) => { console.log(`服务器返回:${event.data}`); }; // 在连接关闭时触发 ws.onclose = () => { console.log('WebSocket 连接关闭'); }; ``` 上面的示例使用 new WebSocket() 创建了一个 WebSocket 对象,连接到了服务器上的 /socket 路径。在连接成功后,使用 ws.send() 向服务器发送数据。在接收到服务器返回的数据时,触发了 ws.onmessage 回调函数,将数据输出到控制台上。在连接关闭时,触发了 ws.onclose 回调函数,输出连接关闭的消息。 **Java 示例:** ```java @ServerEndpoint("/socket") public class MyWebSocket { // 在连接建立时触发 @OnOpen public void onOpen(Session session) { System.out.println("WebSocket 连接成功"); // 向客户端发送消息 session.getBasicRemote().sendText("Hello, Client!"); } // 在接收到客户端消息时触发 @OnMessage public void onMessage(String message, Session session) { System.out.println("客户端发送的消息:" + message); // 向客户端回复消息 try { session.getBasicRemote().sendText("I received your message: " + message); } catch (IOException e) { e.printStackTrace(); } } // 在连接关闭时触发 @OnClose public void onClose() { System.out.println("WebSocket 连接关闭"); } } ``` 上面的示例使用 Java 中的 @ServerEndpoint 注解将一个 POJO 类转换为 WebSocket 服务器。在连接建立时,触发了 @OnOpen 注解标记的方法,向客户端发送了一条消息。在接收到客户端发送的消息时,触发了 @OnMessage 注解标记的方法,将消息输出到控制台并回复一条消息。在连接关闭时,触发了 @OnClose 注解标记的方法,输出连接关闭的消息。 需要注意的是,Java 的 WebSocket 代码需要运行在 WebSocket 服务器上才能正常工作,比如 Tomcat、Jetty 等 。
上一篇:
HTTP协议
下一篇:
Mysql架构
该分类下的相关小册推荐:
Java高并发秒杀入门与实战
Java语言基础1-基础知识
Mybatis合辑3-Mybatis动态SQL
JAVA 函数式编程入门与实践
Mybatis合辑4-Mybatis缓存机制
Java语言基础6-面向对象高级
Java并发编程
Java语言基础10-Java中的集合
Java语言基础16-JDK8 新特性
Java语言基础12-网络编程
Java语言基础14-枚举和注解
Java必知必会-Maven初级