@ConnectMapping не запускается даже после отправки кадра SETUP от клиента rsocket js - PullRequest
0 голосов
/ 03 августа 2020

Я запускал образец проекта RSocket из (https://dzone.com/articles/rsocket-with-spring-boot-amp-js-zero-to-hero), где я пытался сохранить объект запрашивающего для каждого идентификатора клиента.

Rsocket JS Клиент:

  client = new RSocketClient({
    serializers: {
      data: JsonSerializer,
      metadata: IdentitySerializer
    },
    setup: {
      payload: {
        data: "121212",
        metadata: String.fromCharCode("client-id".length) + "client-id"
      },
      keepAlive: 60000,
      lifetime: 180000,
      dataMimeType: "application/json",
      metadataMimeType: "message/x.rsocket.routing.v0"
    },
    transport: new RSocketWebSocketClient({
      url: 'ws://localhost:8080/tweetsocket'
    }),
  });

  // Open the connection
  client.connect().subscribe({
    onComplete: socket => {
      // socket provides the rsocket interactions fire/forget, request/response,
      // request/stream, etc as well as methods to close the socket.
      socket.requestStream({
        data: {
          'author': document.getElementById("author-filter").value
        },
        metadata: String.fromCharCode('tweets.by.author'.length) + 'tweets.by.author',
      }).subscribe({
        onComplete: () => console.log('complete'),
        onError: error => {
          console.log(error);
          addErrorMessage("Connection has been closed due to ", error);
        },
        onNext: payload => {
          console.log(payload.data);
          reloadMessages(payload.data);
        },
        onSubscribe: subscription => {
          subscription.request(2147483647);
        },
      });
    },
    onError: error => {
      console.log(error);
      addErrorMessage("Connection has been refused due to ", error);
    },
    onSubscribe: cancel => {
      /* call cancel() to abort */
    }
  });
}

Rsocket Java Сервер:

@ConnectMapping(value = "client-id")
    public void onConnect(RSocketRequester rSocketRequester, @Payload String clientId) {
        logger.info(clientId);
        rSocketRequester.rsocket()
                .onClose() // (1)
//                .doFirst(() -> logger.info("Client Connected "))
//                .doOnError( error -> logger.info("Channel to client {} CLOSED", error)) // (3)
                .subscribe(null, null, () -> logger.info("herererer"));
    }

    @MessageMapping("tweets.by.author")
    public Flux<Tweet> getByAuthor(TweetRequest request) {
        return service.getByAuthor(request.getAuthor());
    }
    

Я запускал приложение в режиме отладки и не могу запустить аннотированный метод onConnect ConnectMapping. Пожалуйста, помогите понять, что мне здесь не хватает.

...