Java游戏服务器开发之十--消息处理器INetworkConsumer

Java游戏服务器开发之十-消息处理器INetworkConsumer
有了session我们就可以在任何地方向客户端发送信息
写好了session,可以写一个对消息的处理类(消费者)。


add
INetworkConsumer
NetworkConsumer
update
TcpMessageStringHandler


多加一个INetworkConsumer接口,里面就一个方法consume
写一个实现类NetworkConsumer,实现consume方法,然后将handle中的channelRead0中的内容拷贝过来。简单实现下,在加个@Component注解。


在TcpMessageStringHandler中
注入
@Autowired
private INetworkConsumer consumer;
把channelRead0的内容改成consumer.consume(msg, ctx.channel());


看看具体的代码吧:“


INetworkConsumer
/*
 * Copyright (C), 2015-2018
 * FileName: INetworkConsumer
 * Author:   zhao
 * Date:     2018/6/23 21:06
 * Description: 网络消息处理器
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.lizhaoblog.base.network.customer;

import io.netty.channel.Channel;

/**
 * 〈一句话功能简述〉<br>
 * 〈网络消息处理器〉
 *
 * @author zhao
 * @date 2018/6/23 21:06
 * @since 1.0.0
 */
public interface INetworkConsumer {
  /**
   * 执行具体的指令
   *
   * @param message message 客户端发送的消息
   * @param channel channel 与客户端连接的管道
   */
  void consume(String message, Channel channel);
}



NetworkConsumer
/*
 * Copyright (C), 2015-2018
 * FileName: INetworkConsumer
 * Author:   zhao
 * Date:     2018/6/23 21:06
 * Description: 网络消息处理器
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改时间           版本号              描述
 */
package com.lizhaoblog.server.core.customer;

import com.lizhaoblog.base.network.customer.INetworkConsumer;
import com.lizhaoblog.base.session.SessionManager;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import io.netty.channel.Channel;

/**
 * 〈一句话功能简述〉<br>
 * 〈网络消息处理器,实现类〉
 *
 * @author zhao
 * @date 2018/6/23 21:09
 * @since 1.0.0
 */
@Component
public class NetworkConsumer implements INetworkConsumer {
  private static final Logger logger = LoggerFactory.getLogger(NetworkConsumer.class);

  @Override
  public void consume(String message, Channel channel) {
    logger.info("服务器收到的数据内容:data=" + message);
    String result = "小李,我是服务器,我收到你的信息了。";
    SessionManager.getInstance().sendMessage(channel, result);
  }
}




后面就可以在NetworkConsumer实现路由的功能,将消息转到各自的处理中了


  上面的代码在码云上 https://gitee.com/lizhaoandroid/JgServer
可以加qq群一起探讨Java游戏服务器开发的相关知识 676231524

猜你喜欢

转载自blog.csdn.net/cmqwan/article/details/80797879
今日推荐