当前位置:  首页>> 技术小册>> 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 示例:

  1. // 创建 WebSocket 对象
  2. const ws = new WebSocket('wss://example.com/socket');
  3. // 在连接成功时触发
  4. ws.onopen = () => {
  5. console.log('WebSocket 连接成功');
  6. // 向服务器发送数据
  7. ws.send('Hello, Server!');
  8. };
  9. // 在接收到服务器数据时触发
  10. ws.onmessage = (event) => {
  11. console.log(`服务器返回:${event.data}`);
  12. };
  13. // 在连接关闭时触发
  14. ws.onclose = () => {
  15. console.log('WebSocket 连接关闭');
  16. };

上面的示例使用 new WebSocket() 创建了一个 WebSocket 对象,连接到了服务器上的 /socket 路径。在连接成功后,使用 ws.send() 向服务器发送数据。在接收到服务器返回的数据时,触发了 ws.onmessage 回调函数,将数据输出到控制台上。在连接关闭时,触发了 ws.onclose 回调函数,输出连接关闭的消息。

Java 示例:

  1. @ServerEndpoint("/socket")
  2. public class MyWebSocket {
  3. // 在连接建立时触发
  4. @OnOpen
  5. public void onOpen(Session session) {
  6. System.out.println("WebSocket 连接成功");
  7. // 向客户端发送消息
  8. session.getBasicRemote().sendText("Hello, Client!");
  9. }
  10. // 在接收到客户端消息时触发
  11. @OnMessage
  12. public void onMessage(String message, Session session) {
  13. System.out.println("客户端发送的消息:" + message);
  14. // 向客户端回复消息
  15. try {
  16. session.getBasicRemote().sendText("I received your message: " + message);
  17. } catch (IOException e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. // 在连接关闭时触发
  22. @OnClose
  23. public void onClose() {
  24. System.out.println("WebSocket 连接关闭");
  25. }
  26. }

上面的示例使用 Java 中的 @ServerEndpoint 注解将一个 POJO 类转换为 WebSocket 服务器。在连接建立时,触发了 @OnOpen 注解标记的方法,向客户端发送了一条消息。在接收到客户端发送的消息时,触发了 @OnMessage 注解标记的方法,将消息输出到控制台并回复一条消息。在连接关闭时,触发了 @OnClose 注解标记的方法,输出连接关闭的消息。

需要注意的是,Java 的 WebSocket 代码需要运行在 WebSocket 服务器上才能正常工作,比如 Tomcat、Jetty 等 。


该分类下的相关小册推荐: