Netty WebSockets и TCP-сокеты - PullRequest
       25

Netty WebSockets и TCP-сокеты

0 голосов
/ 05 февраля 2012

Я пытаюсь смешивать TCP и WebSockets в Netty.У меня есть два сервера, один с Websockets и один с TCP.Все пользователи, собранные в DefaultUserGroup, и по этой причине я не знаю, какой пользователь в userGroup пришел из WebSockets или TCP, я не могу правильно написать им (DefaultUserGroup.write).

Сервер Websocket:

    ChannelPipeline pipeline = pipeline();
    pipeline.addLast("decoder", new HttpRequestDecoder());
    pipeline.addLast("aggregator", new HttpChunkAggregator(65536));
    pipeline.addLast("encoder", new HttpResponseEncoder());
    pipeline.addLast("handler", new WebSocketServerHandler(readQueueHandler));

TCP-сервер:

         pipeline.addLast("framer", new DelimiterBasedFrameDecoder(8192, Delimiters.lineDelimiter()));
         pipeline.addLast("decoder", new StringDecoder());
         pipeline.addLast("encoder", new StringEncoder());
         pipeline.addLast("handler", new MyBusinessLogicHandler(readQueueHandler));

1 Ответ

0 голосов
/ 08 февраля 2012

Если DefaultUserGroup - это ChannelGroup, почему бы просто не создать две разные группы каналов, одну для TCP и одну для WS, и записывать в обе, используя их соответствующие фреймы.

В качестве альтернативы, вы можете создать POJO с некоторыми флагами, которые идентифицируют тип канала, затем, когда будет установлено новое соединение, создать новый POJO, установить флаг типа канала и прикрепить его к присоединению канала (channel.setAttachement(...)). Затем вы можете проверить тип канала перед записью на него, чтобы убедиться, что вы правильно отформатировали кадр (channel.getAttachement()).

...