我们正在做一些黑客马拉松工作,我想尝试一些新技术来摆脱通常的控制器。
我开始使用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;或者更好地创建额外的端点(就像使用普通控制器一样)?
提前感谢您的帮助。