问题描述
我想实现一个客户端处理程序,它将接收我的服务器回调。以下 tutorial 提供了如何在 Java 中处理来自服务器的回调的想法:
@Slf4j
class ClientHandler {
@MessageMapping("client-status")
public Flux<String> statusUpdate(String status) {
log.info("Connection {}",status);
return Flux.interval(Duration.ofSeconds(5)).map(index -> String.valueOf(Runtime.getRuntime().freeMemory()));
}
}
我被困在这里想知道如何在打字稿中实现类似的东西。我在前端使用 Angular。任何帮助将不胜感激。
解决方法
这个例子有一个简单的回显响应器,它允许服务器向客户端发起请求。
class EchoResponder implements Responder<string,string> {
metadataPush(payload: Payload<string,string>): Single<void> {
return Single.error(new Error('not implemented'));
}
fireAndForget(payload: Payload<string,string>): void {
logRequest('fire-and-forget',payload);
}
因此您可以连接套接字,而不是从客户端->服务器发起任何请求,而是等待服务器->客户端请求。
const client = new RSocketClient({
setup: {
dataMimeType: 'text/plain',keepAlive: 1000000,lifetime: 100000,metadataMimeType: 'text/plain',},responder: new EchoResponder(),leases: () =>
new Leases()
.receiver(receivedLeasesLogger)
.sender(stats => periodicLeaseSender(10000,7000,10)),transport: getClientTransport(address.host,address.port),});