springboot+websocket實現群聊


創建springboot工程,pom.xml文件中引入socket依賴

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

創建socket核心配置類

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {
    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/endpointSang").withSockJS(); //添加終點
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic");//開啟top代理
    }
}

創建controller

@Controller
public class WebSocketController {
    
    @MessageMapping("/welcome")  //那個請求/welcomel發來的
    @SendTo("/topic/getResponse") //發到那個訂閱topic/getResponse
    public String getMessage(String name){
        System.out.println(name);
        return name;
    }
}

創建index.html網頁,記得引入相關的js文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>websocket廣播</title>
    <script src="jquery-3.4.1.js"></script>
    <script src="sockjs.min.js"></script>
    <script src="stomp.js"></script>
</head>
<body>

<button type="button" onclick="connent()">連接</button>
<input type="text" id="name"/>
<button type="button" onclick="sendMsg()">發送</button>
<script>

    var stompClient=null;

    //連接socket
    function connent() {
        var socket = new SockJS("/endpointSang");
        stompClient= Stomp.over(socket);
        stompClient.connect({},function (frame) {
            stompClient.subscribe("/topic/getResponse",function (response) {
                console.log(response)
            })
        })
    }

    //斷開連接
    function disConnent() {
        if (stompClient!=null) {
            stompClient.disconnect();
        }
    }

    //發送數據
    function  sendMsg() {
        var name = $("#name").val();
        stompClient.send("/welcome",{},JSON.stringify({"name":name}));
    }


</script>

</body>
</html>

點擊連接后

 

 發送數據后顯示

 

 只要是訂閱/topic/getResponse的都能接收到數據。

到此,群聊演示完畢.

源代碼地址:https://github.com/duanbochao/websocket.git

 

 

備注:controller中的代碼頁可以簡化為如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM