小编San*_*ndy的帖子

无效的 SockJS 路径 /topic/mytopic - 需要有 3 个路径段

我有一个 Spring Boot 应用程序,其中添加了 websocket 功能,以便 websocket 客户端可以发出订阅请求以订阅 websocket 主题之外的消息。

在我的控制器的方法中,我添加了一个注释 @SubscribeMapping("/topic/mytopic")。

我的 WebSocketConfig 如下所示:

@Configuration
@ComponentScan
@EnableWebSocket
public class WebSocketConfig extends WebSocketMessageBrokerConfiguratioSupport{
   @Override
   public void registerStompEndpoints(StompEndpointRegistry registry){
     registry.addEndpoint("/my-app")
             .setAllowedOrigin("*")
             .withSockJS();
   }

   @Override
   public void configureMessageBroker(MessageBrokerRegistry registry){
     registry.enableSimpleBroker("/topic/");
     registry.setApplicationDestinationPrefixes("/");
 }
}
Run Code Online (Sandbox Code Playgroud)

当我进入浏览器并输入:

http://localhost:<MY_PORT>/my-app
Run Code Online (Sandbox Code Playgroud)

然后我收到回复“欢迎使用 SockJS!”。这表明Websocket服务器确实已启动并正在运行。

但令我惊讶的是,当我使用 Postman 的 Websocket 功能并尝试使用以下网址进行 Websocket 订阅时:

ws://localhost:<MY_PORT>/my-app/topic/mytopic 
Run Code Online (Sandbox Code Playgroud)

此错误记录在控制台中:无效的 SockJS 路径 /topic/mytopic - 需要有 3 个路径段

并且连接会自动断开。

我在这里做错了什么吗?请指教。

websocket spring-boot spring-websocket

7
推荐指数
0
解决办法
1407
查看次数

在集成测试中覆盖@Value

对于我的一个Spring bean(比如Application类),我使用@Value注释从属性文件(prop.properties)中获取属性的值(my.property.flag = true/false).这完全没问题.

我需要编写一个集成测试(比如说ApplicationIt类),我需要测试属性的值,即true和false.

在我的属性文件中,属性的值设置为true.是否可以从我的Integration测试中将值动态设置为false?

例如,

prop.properties:

    my.property.flag=true
Run Code Online (Sandbox Code Playgroud)

应用程序类文件:

    @Component
    class Application {
        //This value is fetched from properties file
        //the value is set to true.
        @Value(${my.property.flag})
        private String isTrue;
        ......
        ..........
    }
Run Code Online (Sandbox Code Playgroud)

整合测试:

    class ApplicationIT {
        //how can I set the value of isTrue here to false?
    }
Run Code Online (Sandbox Code Playgroud)

java spring integration-testing spring-test

6
推荐指数
3
解决办法
4837
查看次数

更新maven项目模块中的父版本

我有一个奇怪的场景,我有一个项目"Y",它有一个模块"X"和其他一些模块.

X是项目Y的一部分,但它不作为该项目的模块链接.因此,每次发布更新版本的Y时,都需要手动更新X中的父版本.

我需要以下列方式更新Y项目:a)每次发布Y项目时,X中的父项目版本应由TeamCity自动更新(与其他模块类似)

b)X不得是Y分布的一部分

c)一旦部署在TeamCity中,它就不应该从X运行测试(它们应该使用Integration测试和发布版本运行)

java teamcity pom.xml maven

5
推荐指数
1
解决办法
8873
查看次数