springboot中websocket使用案例

15 篇文章 3 订阅 ¥9.90 ¥99.00

1.pom.xml引入jar包

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-websocket</artifactId>
            <version>2.5.2</version>
        </dependency>

2.新建websocker类

package net.supwit.websocket;



import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;


@ServerEndpoint("/videoSocket/{taskid}")
@Component
@Slf4j
public class VideoWebSocket {

    public volatile static Map<String, Set<Session>> clients = new ConcurrentHashMap<>();

    @OnOpen
    public void onOpen(@PathParam("taskid") String taskid, Ses
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个简单的 Spring Boot + Vue.js + WebSocket 的项目案例,该项目实现了一个简单的在线聊天室: 后端部分(Spring Boot + WebSocket): 1. 创建 Spring Boot 项目,在 pom.xml 添加 WebSocket 和 Thymeleaf 的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency> ``` 2. 创建 WebSocket 配置类: ```java @Configuration @EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer { @Override public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) { registry.addHandler(new ChatWebSocketHandler(), "/chat").setAllowedOrigins("*"); } } ``` 3. 创建 WebSocket 处理类: ```java public class ChatWebSocketHandler extends TextWebSocketHandler { private static final List<WebSocketSession> sessions = new CopyOnWriteArrayList<>(); @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { sessions.add(session); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { for (WebSocketSession s : sessions) { s.sendMessage(message); } } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { sessions.remove(session); } } ``` 4. 创建一个简单的控制器,用于返回聊天室页面: ```java @Controller public class ChatController { @GetMapping("/") public String index() { return "index"; } } ``` 5. 创建聊天室页面 index.html: ```html <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>WebSocket Chat Demo</title> </head> <body> <h1>WebSocket Chat Demo</h1> <div> <div id="message-list"></div> <form id="chat-form"> <input type="text" id="message-input"> <button type="submit">Send</button> </form> </div> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script src="/js/chat.js"></script> </body> </html> ``` 6. 创建 JavaScript 文件 chat.js,用于连接 WebSocket 服务器并处理消息: ```javascript $(function () { var socket = new WebSocket("ws://" + location.host + "/chat"); socket.onopen = function () { console.log("WebSocket connection established."); }; socket.onmessage = function (event) { var message = event.data; $("#message-list").append($("<div>").text(message)); }; socket.onclose = function () { console.log("WebSocket connection closed."); }; $("#chat-form").submit(function (event) { event.preventDefault(); var message = $("#message-input").val(); socket.send(message); $("#message-input").val(""); }); }); ``` 前端部分(Vue.js): 1. 在根目录下创建一个 public/js 目录,用于存放 Vue.js 和 chat.js 文件。 2. 在 index.html 引入 Vue.js 文件: ```html <script src="https://cdn.bootcss.com/vue/2.6.11/vue.min.js"></script> ``` 3. 创建 Vue.js 组件 ChatRoom,用于显示聊天室页面: ```html <template> <div> <div id="message-list"> <div v-for="message in messages" :key="message">{{ message }}</div> </div> <form @submit.prevent="sendMessage"> <input v-model="messageText" type="text" id="message-input"> <button type="submit">Send</button> </form> </div> </template> <script> export default { data() { return { messages: [], messageText: '' } }, mounted() { var socket = new WebSocket("ws://" + location.host + "/chat"); socket.onmessage = event => { var message = event.data; this.messages.push(message); }; }, methods: { sendMessage() { var socket = new WebSocket("ws://" + location.host + "/chat"); socket.send(this.messageText); this.messageText = ''; } } } </script> ``` 4. 创建 main.js 文件,用于创建 Vue.js 实例并挂载到页面: ```javascript import Vue from 'vue' import ChatRoom from './components/ChatRoom.vue' new Vue({ el: '#app', components: { ChatRoom }, template: '<ChatRoom/>' }) ``` 5. 修改 index.html,使用 Vue.js 组件替代原有的 HTML 代码: ```html <!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>WebSocket Chat Demo</title> </head> <body> <h1>WebSocket Chat Demo</h1> <div id="app"> <chat-room></chat-room> </div> <script src="https://cdn.bootcss.com/vue/2.6.11/vue.min.js"></script> <script src="/js/main.js"></script> </body> </html> ``` 以上就是一个简单的 Spring Boot + Vue.js + WebSocket 的项目案例
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

做一枚有思想的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值