Я кодирую игровой сервер, используя org.jboss.netty. Если честно, я впервые пишу приложение TCP / IP.
Нетти внезапно перестает вызывать мои функции в обработчике. Я попытался добавить следующие строки, чтобы отключить пустые соединения:
LINE 1 TO PIPELINE : pipeline.addLast("timeout", new IdleStateHandler(idleTimer, 82 , 0, 0));
LINES TO HANDLER :
public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e) throws Exception {
super.channelIdle(ctx, e);
ctx.getChannel().close();
}
Тем не менее, я сталкиваюсь с той же проблемой.
На этом игровом сервере у меня есть временные задачи (есть отдельный пул исполнителей), например, каждые 3 секунды отправляется сообщение 1800 клиентам. Может ли это быть проблемой? Вы когда-нибудь сталкивались с такой проблемой?
Полагаю, проблема в том, чтобы периодически отправлять данные клиентам. Потому что, поскольку мы используем пул потоков в netty, медленные соединения или плохая сеть могут вызывать длинные очереди отправки, что влияет на количество доступных потоков в пуле. Что ты думаешь?