【问题标题】:How to implement an RSocketRequest Client Handler in Typescript如何在 Typescript 中实现 RSocketRequest 客户端处理程序
【发布时间】:2021-01-26 12:36:35
【问题描述】:

我想实现一个客户端处理程序,它将接收我的服务器回调。以下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。任何帮助都将不胜感激。

【问题讨论】:

    标签: typescript spring-webflux rsocket


    【解决方案1】:

    这个例子有一个简单的回显响应器,它允许服务器向客户端发起请求。

    https://github.com/rsocket/rsocket-js/blob/c539b3a42d56780011392fc06ebd488d09f929da/packages/rsocket-examples/src/LeaseClientExample.js

    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),
    });
    

    【讨论】:

      猜你喜欢
      • 2012-08-31
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-23
      • 1970-01-01
      相关资源
      最近更新 更多