2012-02-05 2 views
0

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

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 Server:

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

В чем ваш вопрос? –

ответ

0

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

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