@Override public void channelConnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { // Событие вызывается при подключении клиента. Я создаю здесь Worker игрока — объект, который // занимается обработкой данных игрока // непостредственно. // Я передаю ему канал игрока (функция e.getChannel()), чтобы он мог в него посылать пакеты worker = workerClass.newInstance(); worker.setChannel(e.getChannel()); worker.setClientHandler(this); // worker = new InterserverWorker(this, e.getChannel()); // log.info("channelConnected"); }
@Override public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) { // Функция принимает уже готовые AbstractPacket'ы от игрока, поэтому их можно сразу посылать в // worker. За их формирование отвечает другой обработчик. // log.info("messageReceived"); if (e.getChannel().isOpen()) worker.acceptPacket((AbstractPacket) e.getMessage()); }
@Override public void channelDisconnected(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception { // Событие закрытия канала. Используется в основном, чтобы освободить ресурсы, или выполнить // другие действия, которые происходят при // отключении пользователя. Если его не обработать, Вы можете и не заметить, что пользователь // отключился, если он напрямую не сказал этого // серверу, а просто оборвался канал. // log.info("channelDisconnected"); worker.disconnectedFromChannel(); }