SpringCloudGateway笔记(10)-websocket

使用SpringCloudGateway的重要功能 – websocket的转发

spring-boot的第一代网关zuul不支持websocket的转发,而在实际应用场景中,websocket作为一个常用功能,这大大限制了zuul的使用

SpringCloudGateway支持websocket的转发

配置websocket的客户端和服务端

客户端页面代码




    
    Spring Boot Websocket
    
    
    
    





服务端配置

WebSocketConfig

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry){
        //客户端连接端点
        registry.addEndpoint("/websocket")
                .setAllowedOrigins("*")
                .withSockJS();
    }
}

WebsocketController

@Slf4j
@RestController
public class WebsocketController {
    @Autowired
    private SimpMessagingTemplate template;


    @MessageMapping("/chat")
    @SendTo("/subscribe")
    public String say(String msg) {
        log.info("websocket msg: {}", msg);
        return msg;
    }

    @GetMapping("/websocket/reply")
    public String msgReply(@RequestParam String msg) {
        log.info("websocket reply: {}", msg);
        template.convertAndSend("/subscribe", msg);
        return msg;
    }
}

配置Gateway,普通的websocket用下面的配置,这里用上面这个配置就可以了

        - id: spring-cloud-client-demo3
          uri: lb://spring-cloud-client-demo
          predicates:
            - Path=/websocket/**
          filters:
            - StripPrefix=1
        - id: spring-cloud-client-demo4
          uri: lb:ws://spring-cloud-client-demo
          predicates:
            - Path=/websocket/**

运行程序

打开页面

SpringCloudGateway笔记(10)-websocket_第1张图片

点击connect连接websocket

SpringCloudGateway笔记(10)-websocket_第2张图片

连接成功 输入消息发送

SpringCloudGateway笔记(10)-websocket_第3张图片

后台同样收到消息

2019-06-29 22:20:35.881  INFO 13880 --- [boundChannel-38] c.m.d.c.websocket.WebsocketController    : websocket msg: a:hello

POSTMAN调用后台发送消息的接口

SpringCloudGateway笔记(10)-websocket_第4张图片

查看页面同样可以收到消息

SpringCloudGateway笔记(10)-websocket_第5张图片

查看chrome的控制台也可以看到相关打印

SpringCloudGateway笔记(10)-websocket_第6张图片
GITHUB代码地址

欢迎关注微信交流
在这里插入图片描述

你可能感兴趣的:(springcloud,Gateway)