Netty: http-сервер отправляет http-запрос на другой сервер - PullRequest
0 голосов
/ 14 февраля 2019

Я создаю платформу Iot и использую Netty для создания http-сервера для этой платформы.Вот что мне нужно:

(1) Некоторое приложение отправляет запрос на мой http-сервер.
(2) Мой http-сервер получает один параметр из http-запроса и на основании этого параметра отправляет другой http-запросдругой сервер.
(3) После ответов другого сервера подготовьте новый HTTP-ответ к исходному приложению.

Я думаю, что в этом процессе сервер является и сервером http, и клиентом.Поэтому у меня есть два набора классов, httpServer и httpClient.Моя проблема в том, что после того, как мой сервер получил ответ от другого сервера, я не знаю, как передать ответ из класса httpClientHandler в класс httpServerHandler.Я нашел несколько похожих постов, но не получил очень четких инструкций.

Вот ссылки, которые я нашел: (1) события пожара в httpClientHandler (2) вернуть будущее (3) , кажется, использует другие темы (я действительно не понимаю этого) (4) у этого, кажется, нет ясного ответа.

Ниже приведены решения, которые я пытался (и не смог)

(1) Я пытался передать channelHandlerContext из httpServerHandler в httpClientHandler.И позвоните ctx.writeAndFlush("something") в httpClientHandler следующим образом:

public class HttpClientHandler {
    private ChannelHandlerContext serverCtx;

    public HttpSnoopClientHandler(ChannelHandlerContext serverCtx) {
        this.serverCtx = serverCtx;
    }
    @Override
    public void channelRead0(ChannelHandlerContext ctx, HttpObject msg){
        this.serverCtx.writeAndFlush("something");
    } 
}

Но это не сработало.Точнее говоря, я не увидел «что-то», показанное в ответе.

(2) Я также пытался использовать будущее, но не понимаю, куда мне его поместить.В частности, я могу только «получить» ответ в методе channelRead0 из HttpClientHandler.Как раздать будущий объект для прослушивания httpServerHandler?

(3) Я также думал об использовании настраиваемого события, но пока не очень ясно, как его реализовать.

Будем благодарны за любые предложения!

...