集成websocket、gateway时老是提示访问地址404,麻烦帮忙查看

Blade 未结 1 4915
hwxiang
hwxiang 2019-07-18 14:23

修改 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 网关地址





Spring Boot WebSocket+广播式


    
    
        
            连接             断开连接         
                                   
                          发送             

        
    
                            var stompClient = null;         var host="http://192.168.7.182/blade-demo/websocket";         function setConnected(connected) {             document.getElementById('connect').disabled = connected;             document.getElementById('disconnect').disabled = !connected;             document.getElementById('conversationDiv').style.visibility = connected ? 'visible' : 'hidden';             $('#response').html();         }         function connect() {             var socket = new SockJS(host);             stompClient = Stomp.over(socket);             stompClient.connect({}, function(frame) {                 setConnected(true);                 console.log('Connected:' + frame);                 stompClient.subscribe('/topic/helloworld', function(response) {                     showResponse(response.body);                 });             });         }         function disconnect() {             if (stompClient != null) {                 stompClient.disconnect();             }             setConnected(false);             console.log("Disconnected");         }         function send() {             var name = $('#name').val();             var message = $('#messgae').val();             stompClient.send("/hellowebsocket", {}, JSON.stringify({username:name,message:message}));         }         function showResponse(message) {             var response = $('#response');             response.html(message);         }     


提示错误:

1、老是提示跨域问题,网关都是自行处理过了

2、blade-demo 模块提示错误日志  /info   404

image.png

1条回答
  •  admin
    admin (楼主)
    2019-07-20 00:02

    我先记录一下,后期集成成功后把例子传到私服

    0 讨论(1)
提交回复
热议问题
boot版关于用户登出 1
blade4.4 cloud prod环境登录后blade-resource下的接口都401,必须等十几分钟后才能调用? 1
协议转换和规则引擎能否实现第三方设备的采集与下行管控,无需任何代码开发 1
升级BladeX5.0的Saber后,整个前端访问变得很慢 1
前端表单设计器的源码从哪里获得,几年前买过前后端的授权,哪个仓库可以获取??? 1
前端,表单设计器的源码从哪里可以获取到? 1
想把框架中逻辑删除 关闭掉,整个数据权限相关功能是否会受到影响? 1
华为云OBS的对象存储怎么配置和使用? 1
为啥我导出提示令牌无效,但是我给超级管理员权限就可以导出 1
锁定管理列表,超过时间统计窗口的记录状态还是待锁定,在筛选和查看时会看到多条呆锁定的记录 1
layui

扫一扫访问 Blade技术社区 移动端