springboot WebSocket的用法

Spring Boot中使用Java API创建WebSocket

  1. 添加WebSocket的依赖项
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
  1. 创建WebSocket端点
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import org.springframework.stereotype.Component;
@ServerEndpoint(value = "/websocket")
@Component
public class WebSocketServer {
   // 连接建立成功调用的方法
   @OnOpen
   public void onOpen(Session session) {
       System.out.println("Connected to client, session ID: " + session.getId());
   }
   // 连接关闭调用的方法
   @OnClose
   public void onClose() {
       System.out.println("Connection closed");
   }
   // 收到客户端消息后调用的方法
   @OnMessage
   public void onMessage(String message, Session session) {
       System.out.println("Message from client: " + message);
       // 回送消息
       session.getAsyncRemote().sendText("Hello, I got your message: " + message);
   }
   // 发生错误时调用
   @OnError
   public void onError(Session session, Throwable error) {
       System.out.println("Error occurred");
       error.printStackTrace();
   }
}
  1. 配置WebSocket
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
   @Bean
   public ServerEndpointExporter serverEndpointExporter() {
       return new ServerEndpointExporter();
   }
}

优化创建WebSocket端点的代码, 按用户UID来保存WebSocket会话

import javax.websocket.OnClose;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
import java.util.concurrent.ConcurrentHashMap;
@ServerEndpoint(value = "/websocket/{uid}")
@Component
public class WebSocketServer {
    // 使用ConcurrentHashMap来存储用户ID和WebSocket会话对象的映射。
    private static ConcurrentHashMap<String, WebSocketServer> webSocketMap = new ConcurrentHashMap<>();
    @OnOpen
    public void onOpen(@PathParam("uid") String uid, Session session) {
        // 将新建立的会话添加到webSocketMap中
        webSocketMap.put(uid, this);
        // 其他代码...
    }
    @OnClose
    public void onClose(@PathParam("uid") String uid, Session session) {
        // 当会话关闭时,从webSocketMap中移除该会话
        webSocketMap.remove(uid);
        // 其他代码...
    }
    // ...其它方法如onMessage等等
}

wss://127.0.0.1:8080/websocket/与ws://127.0.0.1:8080/websocket/的区别

区别在于它们使用的协议不同。“wss”代表WebSocket Secure,它是WebSocket的安全版本,意味着数据传输是加密的,类似于HTTPS在HTTP上增加了安全层。而“ws”则是普通的WebSocket协议,不提供加密,类似于HTTP。简单来说,使用“wss”协议可以更安全地保护数据传输不被监听和篡改。在生产环境中,建议使用“wss”协议以确保安全性。如果你的服务部署在了安全环境中,有时候也被称为是在使用WebSocket over TLS(传输层安全)。

getBasicRemote()和getAsyncRemote()

相关推荐

  1. nc

    2024-04-23 07:50:06       33 阅读
  2. QueryWrapper

    2024-04-23 07:50:06       14 阅读
  3. axios

    2024-04-23 07:50:06       8 阅读
  4. React <> </>

    2024-04-23 07:50:06       9 阅读
  5. pymysql基本

    2024-04-23 07:50:06       40 阅读
  6. css_auto

    2024-04-23 07:50:06       35 阅读
  7. 关于QUOTENAME

    2024-04-23 07:50:06       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-23 07:50:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-23 07:50:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-23 07:50:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-23 07:50:06       18 阅读

热门阅读

  1. K8S Pod 常见问题

    2024-04-23 07:50:06       14 阅读
  2. 2024年最新 CKA 试题题库及答案详解 导航页

    2024-04-23 07:50:06       16 阅读
  3. Linux学习(嵌入式硬件知识)

    2024-04-23 07:50:06       16 阅读
  4. 【Node.js】json-server

    2024-04-23 07:50:06       36 阅读
  5. Ruby中Rack中间件的作用是什么?如何应用?

    2024-04-23 07:50:06       28 阅读
  6. Kubernetes 核心技术组件Scheduler解析

    2024-04-23 07:50:06       49 阅读
  7. I fumo 星(STL,数学)

    2024-04-23 07:50:06       17 阅读
  8. Nginx四层负载均衡

    2024-04-23 07:50:06       26 阅读
  9. CSS3 transition过渡:打造流畅动画效果的全面指南

    2024-04-23 07:50:06       33 阅读
  10. 天星金融消保课堂开讲,金融健康意识再提升

    2024-04-23 07:50:06       16 阅读
  11. 说说redis的集群的原理吧

    2024-04-23 07:50:06       15 阅读
  12. redis 无占用 两种方式 清除大批量数据 lua脚本

    2024-04-23 07:50:06       13 阅读
  13. gitlab上传新创建的工程项目

    2024-04-23 07:50:06       56 阅读