springboot 整合websoket

建一个springboot想demo
在这里插入图片描述
然后是html
在这里插入图片描述

先看websocket配置类
WebSocketStompConfig

package com.example.demo.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;

/**
*

  • @ClassName: WebSocketStompConfig
  • @Description: springboot websocket stomp配置
  • @author cheng
  • @date 2017年9月27日 下午3:45:36
    */

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketStompConfig extends AbstractWebSocketMessageBrokerConfigurer {

/**
 * 注册stomp的端点
 */
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
    // 允许使用socketJs方式访问,访问点为webSocketServer,允许跨域
    // 在网页上我们就可以通过这个链接
    // http://localhost:8080/webSocketServer
    // 来和服务器的WebSocket连接
    registry.addEndpoint("/webSocketServer").setAllowedOrigins("*").withSockJS();
}

/**
 * 配置信息代理
 */
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
    // 订阅Broker名称
    registry.enableSimpleBroker("/queue", "/topic");
    // 全局使用的消息前缀(客户端订阅路径上会体现出来)
    registry.setApplicationDestinationPrefixes("/app");
    // 点对点使用的订阅前缀(客户端订阅路径上会体现出来),不设置的话,默认也是/user/
    // registry.setUserDestinationPrefix("/user/");
}

}

在这里插入图片描述
然后两个实体类

package com.example.demo.entity;

/**

  • @Auther: liufei

  • @Date: 2020/7/6 16:16

  • @Description:
    */
    public class ClientMessage {
    private String name;

    public String getName() {
    return name;
    }

    public void setName(String name) {
    this.name = name;
    }

}
在这里插入图片描述

package com.example.demo.entity;

/**

  • @Auther: liufei

  • @Date: 2020/7/6 16:16

  • @Description:
    */
    public class ServerMessage {
    private String responseMessage;

    public ServerMessage(String responseMessage) {
    this.responseMessage = responseMessage;
    }

    public String getResponseMessage() {
    return responseMessage;
    }

    public void setResponseMessage(String responseMessage) {
    this.responseMessage = responseMessage;
    }
    }

在这里插入图片描述

package com.example.demo.action;

/**

  • @Auther: liufei
  • @Date: 2020/7/6 16:14
  • @Description:
    */
    import com.example.demo.entity.ClientMessage;
    import com.example.demo.entity.ServerMessage;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.messaging.handler.annotation.MessageMapping;
    import org.springframework.messaging.handler.annotation.SendTo;
    import org.springframework.messaging.simp.annotation.SubscribeMapping;
    import org.springframework.stereotype.Controller;

/**
*

  • @ClassName: WebSocketAction

  • @Description: websocket控制层

  • @author cheng

  • @date 2017年9月27日 下午4:20:58
    */
    @Controller
    public class WebSocketAction {

    private Logger logger = LoggerFactory.getLogger(this.getClass());

    @MessageMapping("/sendTest")
    @SendTo("/topic/subscribeTest")
    public ServerMessage sendDemo(ClientMessage message) {
    logger.info(“接收到了信息” + message.getName());
    return new ServerMessage(“你发送的消息为:” + message.getName());
    }

    @SubscribeMapping("/subscribeTest")
    public ServerMessage sub() {
    logger.info(“XXX用户订阅了我。。。”);
    return new ServerMessage(“感谢你订阅了我。。。”);
    }

}

在这里插入图片描述
package com.example.demo;

import com.example.demo.action.TT;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

/**

  • @Auther: liufei

  • @Date: 2020/7/6 11:31

  • @Description:
    */
    @RestController
    public class TestController {

    @Autowired
    private TT tt;

    @RequestMapping("/aa")
    public String getTest(){

     return tt.getTest1();
    

    }
    }

在这里插入图片描述

import com.example.demo.entity.ServerMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.RequestMapping;

/**

  • @Auther: liufei

  • @Date: 2020/7/6 17:07

  • @Description:
    */
    @Service
    public class TT {
    @Autowired
    private SimpMessagingTemplate messagingTemplate;

    public String getTest1(){
    messagingTemplate.convertAndSend("/topic/subscribeTest", new ServerMessage(“liufei”));
    return “liufei”;
    }

    //客户端只要订阅了/topic/subscribeTest主题,调用这个方法即可
    public void templateTest() {
    messagingTemplate.convertAndSend("/topic/subscribeTest", new ServerMessage(“服务器主动推的数据”));
    }

}

在这里插入图片描述

最后是html

stomp Welcome
发送消息 订阅消息/topic/sendTest 订阅消息/topic/subscribeTest
关闭WebSocket连接
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现Spring Boot整合WebSocket,你需要进行以下步骤: 1. 首先,在pom.xml文件中添加WebSocket的相关依赖。可以使用以下两个依赖之一: - 从中提到的依赖: ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` - 从中提到的依赖: ```xml <!--webSocket--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency> ``` 2. 创建WebSocket配置类,这个类负责配置WebSocket的相关信息。你可以按照以下方式创建一个配置类[3]: ```java package com.loit.park.common.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(); } } ``` 3. 至此,你已经完成了WebSocket的整合配置。现在,你可以在你的应用中创建WebSocket的控制器并定义你的WebSocket端点。你可以根据你的需求来实现WebSocket端点的业务逻辑。 这就是Spring Boot整合WebSocket的基本步骤。通过这种方式,你可以在Spring Boot应用中轻松地使用WebSocket进行实时通信。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [springboot整合websocket](https://blog.csdn.net/weixin_45390688/article/details/120448778)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [springboot整合websocket(详解、教程、代码)](https://blog.csdn.net/hjq_ku/article/details/127503180)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值