如何在 Typescript 中实现 RSocketRequest 客户端处理程序
How to implement an RSocketRequest Client Handler in Typescript
我想实现一个客户端处理程序,它将接收我的服务器回调。以下 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),
});
我想实现一个客户端处理程序,它将接收我的服务器回调。以下 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),
});