Spring 5反应式websocket和多个端点?

时间:2018-05-09 14:07:30

标签: spring spring-boot websocket spring-websocket spring-webflux

我们正在做一些黑客马拉松工作,我想尝试一些新技术来摆脱通常的控制器。

我开始使用Spring Webflux和反应式WebSockets,到目前为止一切正常。我按如下方式配置了我的WebSocket处理程序:

import my.handler.DomWebSocketHandler;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.HandlerMapping;
import org.springframework.web.reactive.config.WebFluxConfigurer;
import org.springframework.web.reactive.handler.SimpleUrlHandlerMapping;
import org.springframework.web.reactive.socket.WebSocketHandler;
import org.springframework.web.reactive.socket.server.support.WebSocketHandlerAdapter;

import java.util.HashMap;
import java.util.Map;

@Configuration
public class AppConfig implements WebFluxConfigurer {

    @Autowired
    private WebSocketHandler domWebSocketHandler;

    @Bean
    public HandlerMapping webSocketMapping() {
        Map<String, WebSocketHandler> map = new HashMap<>();
        map.put("/event-emitter", domWebSocketHandler);

        SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
        mapping.setOrder(1);
        mapping.setUrlMap(map);
        return mapping;
    }

    @Bean
    public WebSocketHandlerAdapter handlerAdapter() {
        return new WebSocketHandlerAdapter();
    }
}

经过一些研究,我了解到最佳做法是为每个客户端使用一个连接。

  

此外,对于同一个应用程序,每个浏览会话使用多个Web套接字似乎有些过分,因为您可以使用发布/订阅源渠道。 See answer here

是否有办法限制每个客户端的连接,并且只为所有必需的客户端使用一个端点&#34;请求&#34;或者更好地创建额外的端点(就像使用普通控制器一样)?

提前感谢您的帮助。

0 个答案:

没有答案