在网上这样的例子还是很多的。但是大多数都是一个简单的demo。甚至还是只用一种Repository的方式。这种方式我发现一个弊端,就是如果你想查询指定Mongodb的数据库集合,那实现起来会很麻烦。所以,结合网上的示例,自己又研究了一些日子。最后搞出用ReactiveMongoTemplate的方式,tail方法监听指定数据库。然后把监听到的数据流通过WebSocket的方式传到前端。具体代码是这样的。
1.首先,实现注解式的WebSocketMapping
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.HandlerMapping;
import org.springframework.web.reactive.socket.server.support.WebSocketHandlerAdapter;
@Configuration
public class WebSocketConfiguration {
/* @Bean
public HandlerMapping webSocketMapping(final EchoHandler echoHandler) {
final Map<String, WebSocketHandler> map = new HashMap<>();
map.put("/echo", echoHandler);
final SimpleUrlHandlerMapping mapping = new SimpleUrlHandlerMapping();
mapping.setOrder(Ordered.HIGHEST_PRECEDENCE);
mapping.setUrlMap(map);
return mapping;
}*/
@Bean
public HandlerMapping webSocketMapping() {
return new WebSocketMappingHandlerMapping();
}
@Bean
public WebSocketHandlerAdapter handlerAdapter() {
return new WebSocketHandlerAdapter();
}
}
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface WebSocketMapping {
String value() de