【发布时间】:2021-05-13 08:23:46
【问题描述】:
据我了解,RSocket-JS 支持使用 encodeCompositeMetadata 和 encodeRoute 路由消息,但是,我无法让服务器接受 fireAndForget 消息。服务器不断记录以下消息:
o.s.m.r.a.support.RSocketMessageHandler : No handler for fireAndForget to ''
这是我试图触发的服务器映射:
@Controller
public class MockController {
private static final Logger LOGGER = LoggerFactory.getLogger(MockController.class);
@MessageMapping("fire-and-forget")
public Mono<Void> fireAndForget(MockData mockData) {
LOGGER.info("fireAndForget: {}", mockData);
return Mono.empty();
}
}
这是尝试建立连接的 TypeScript 代码:
client.connect().subscribe({
onComplete: socket => {
console.log("Connected to socket!")
socket.fireAndForget({
data: { someData: "Hello world!" },
metadata: encodeCompositeMetadata([[MESSAGE_RSOCKET_ROUTING, encodeRoute("fire-and-forget")]])
});
},
onError: error => console.error(error),
onSubscribe: cancel => {/* call cancel() to abort */ }
});
我也尝试过在互联网上找到的其他方式 (metadata: String.fromCharCode('route'.length)+'route') 添加路由,但似乎都不起作用。
我需要做些什么来格式化路由以使 Spring Boot 服务器能够识别并正确路由消息?
【问题讨论】:
标签: spring-boot rsocket rsocket-js