我的要求是,当服务器上发生某些事件时,它应该将更新推送到客户端。想使用 RSocket 而不是 SSE。
rsocket-js 客户端上配置的响应器会响应服务器请求吗?
如果是,那么应该如何将 rsocket-js 响应器配置为接受特定路由上的消息?那部分请澄清。
不确定我的春季服务是否正确。
我的 Webflux Spring Boot RSocket 服务器代码-
@Service
@RequiredArgsConstructor
public class RsocketService {
private final RSocketRequester rSocketRequester;
public void serverToClientRequest(){
Mono.just("Your request is completed at "+ LocalDateTime.now())
.delayElement(Duration.ofSeconds(ThreadLocalRandom.current().nextInt(5, 10)))
.flatMap(m -> rSocketRequester.route("request.stream").data(m).send())
.subscribe();
}
}
我有一个控制器 -
@MessageMapping("request.stream")
public Flux<String> requestStream(@Payload String requestData) {
}
客户端我正在使用来自 'rsocket-websocket-client' 的 RSocketWebSocketClient;
const client = new RSocketClient({
responder: new EchoResponder(),
transport: new RSocketWebSocketClient(
{
url: 'ws://localhost:7000/rsocket',
wsCreator: (url: string) => new WebSocket(url),
debug: true,
}
),
setup: {
dataMimeType: "text/plain",
metadataMimeType: 'message/x.rsocket.routing.v0',
keepAlive: 600000,
lifetime: 180000,
}
});
我的 reactjs 组件-
async componentDidMount() {
const rsocket= await client.connect();
console.log('rsocket client connected');
rsocket
.requestStream({
data: "client message",
metadata: String.fromCharCode('request.stream'.length) + 'request.stream'
})
.subscribe({
onComplete: () => {
console.log("request stream completed");
},
onNext: value => {
console.log("on next-->got data from sever");
console.log(value.data);
},
onError: (error: any) => {
console.log("got error with requestResponse");
console.error(error);
},
onSubscribe: sub => {
console.log("subscribe request Stream!");
sub.request(2147483647);
}
});
}
EchoResponder 取自https://github.com/rsocket/rsocket-js/blob/master/packages/rsocket-examples/src/LeaseClientExample.js。但是响应者没有收到任何消息。任何帮助表示赞赏。