Как я могу получить экземпляр websocket в обработчике restful, используя vertx? - PullRequest
0 голосов
/ 10 января 2019

Я новичок в vert.x. Вот что я хочу сделать:

во-первых, у меня есть конечная точка, обрабатывающая спокойный запрос клиентского приложения.

router.post("/clientrequest").handler(routingContext -> {

  // This handler will be called for every request
  HttpServerResponse response = routingContext.response();
  HttpServerRequest request = routingContext.request();

  request.handler(buffer->{
     // This handler will be called for every chunk of my post request with multi-parts
     //

     //client is a HttpClient = vertx.createHttpClient()
     client.websocket("/anotherWebsockReq",ws->{
     //here I get ws as my websocket client instance ws.writeFrame......
        });       
});

Мой вопрос заключается в том, как заставить экземпляр websocket отправлять оставшийся буфер без создания нового в запросе. цикл обработчика.

1 Ответ

0 голосов
/ 11 января 2019

Получить websocket перед обработкой буферов:

router.post("/clientrequest").handler(routingContext -> {

  // This handler will be called for every request
  HttpServerResponse response = routingContext.response();
  HttpServerRequest request = routingContext.request();

  request.pause()

  client.websocket("/anotherWebsockReq",ws->{
    request.handler(buffer->{
      // write your frames here
    }    
    request.resume();
  }

});

Обратите внимание на вызов pause и resume. Это необходимо, потому что в противном случае данные могут быть потеряны.

...