Сервер Netty для многих долгоживущих TCP-соединений

Я переношу код TCP-сервера/клиента в Netty.

Один вопрос, сервер будет обрабатывать долгоживущие соединения от многих клиентов. В настоящее время мне не нужно и, скорее всего, не понадобится делать такие вещи, как широковещательная рассылка всем клиентам в пакетных операциях и т. д., но мне просто нужно место для хранения этих каналов и механизм, который позволяет мне выборочно отправлять уведомления вниз клиентам, которым дан некоторый идентификатор клиента.

Мой вопрос: является ли ChannelGroup приемлемым механизмом для хранения этих каналов? Когда я впервые получаю соединение, я буду хранить идентификатор канала с идентификатором клиента в карте поиска, чтобы всякий раз, когда мне нужно уведомить конкретного клиента, я искал идентификатор канала, в который мне нужно писать, а затем получаю этот канал из ChannelGroup и отправить сообщение только на этот канал.

Что-то не так с этим подходом?

Спасибо!


person alessandro ferrucci    schedule 02.10.2012    source источник


Ответы (1)


Нет, это кажется разумным, хотя я бы просто сохранил канал с идентификатором клиента и, возможно, прикрепил прослушиватель к Channel#getCloseFuture(), чтобы поддерживать свои сопоставления. Однако ChannelGroup по-прежнему полезен, особенно для закрытия «связанных» каналов как единого целого.

person forty-two    schedule 02.10.2012
comment
Эй, так что я закончил тем, что расширил DefaultChannelGroup, чтобы я мог усвоить сопоставление идентификатора устройства с идентификатором канала и легко делать такие вещи, как getChannelByDeviceId. Я еще не завершил подключение, но я дам вам знать, когда это будет сделано. - person alessandro ferrucci; 03.10.2012