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游戏服务器开发的相关知识 676231564