修改 blade-demo模块
pom文件增加依赖
org.springframework.boot spring-boot-starter-websocket
增加WebSocketAutoConfig 文件
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.EnableWebSocketMessageBroker; import org.springframework.web.socket.config.annotation.StompEndpointRegistry; import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer; @Configuration @EnableWebSocketMessageBroker public class WebSocketAutoConfig implements WebSocketMessageBrokerConfigurer { @Override public void registerStompEndpoints(StompEndpointRegistry registry) { registry.addEndpoint("/bullet","/websocket") //开启/bullet端点 .setAllowedOrigins("*") //允许跨域访问 .withSockJS(); //使用sockJS } @Override public void configureMessageBroker(MessageBrokerRegistry registry) { //订阅Broker名称 //registry.enableSimpleBroker("/topic","/user"); registry.enableSimpleBroker("/toAll","/topic"); //全局使用的订阅前缀(客户端订阅路径上会体现出来) //registry.setApplicationDestinationPrefixes("/app/"); // //点对点使用的订阅前缀(客户端订阅路径上会体现出来),不设置的话,默认也是/user/ //registry.setUserDestinationPrefix("/user/"); } }
增加BulletController
package com.example.demo.controller;
import com.example.demo.dto.BulletMessageDTO; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.messaging.handler.annotation.MessageMapping; import org.springframework.messaging.handler.annotation.SendTo; import org.springframework.messaging.simp.SimpMessagingTemplate; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class BulletController { private static final Logger logger=LoggerFactory.getLogger(BulletController.class); @MessageMapping("/hellowebsocket") //SendTo 发送至 Broker 下的指定订阅路径 @SendTo("/topic/helloworld") // @SendTo("/toAlltoAll/bulletScreen") public String say(BulletMessageDTO clientMessage) { //方法用于广播测试 if (clientMessage!=null){ if (clientMessage.getMessage()!=null){ clientMessage.setMessage(clientMessage.getMessage().trim()); } } logger.info(clientMessage.getUsername()+":"+clientMessage.getMessage()); return clientMessage.getMessage(); } //注入SimpMessagingTemplate 用于点对点消息发送 @Autowired private SimpMessagingTemplate messagingTemplate; @RequestMapping("/send") public void send(String msg){ messagingTemplate.convertAndSend("/topic/helloworld", msg + "hello!!!"); } }
增加blade-gateway 网关配置文件
[
{ "id": "websocket_sockjs_route", "order": -1, "predicates": [ { "name": "Path", "args": { "pattern": "/websocket/info/**" } } ], "filters": [], "uri": "lb://blade-demo" }, { "id": "webSocketRoute", "order": -1, "predicates": [ { "name": "Path", "args": { "pattern": "/websocket/**" } } ], "filters": [], "uri": "lb:ws://blade-demo" } ]
新增静态页面 index.html 192.168.7.182 网关地址
<span class="http"><span class="xml">Spring Boot WebSocket+广播式</span></span> <h2 style="color:#ff0000">貌似你的浏览器不支持websocket</h2>
官方新品
- 热议问题
-
组态平台文档地址在哪
1
-
组态请求mqtt数据无响应,一直加载中。
1
-
@PreAuth("hasMenu('xxx')")
1
-
使用数据源中的SQL数据库数据创建的大屏,如何部署?
1
-
物联网平台进入边缘网关设计页面,提示流程缺少模块
1
-
cloud版本 前端vue3 如何做到页面控制按钮的权限
1
-
怎么把物联网平台设备mqtt连接参数改成永久
1
-
错误信息框架是否能从中文自动翻译成英文
1
-
代码生成器报错创建实例出错
1
-
接口通过传参方式传入jwt的token,微服务已开启二次鉴权,因为无法传递Blade-Auth参数导致Feign调用失败
1
扫一扫访问 Blade技术社区 移动端