1 Star 0 Fork 0

Zhi / GeneralBusServer

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

GeneralBusServer

  一个使用Netty处理的TCP服务器。

使用说明

public class 使用说明 {
    public static void main(String[] args) {
        //new一个对象,绑定服务器
        GeneralBusServer server = new GeneralBusServer(8080);
        //在未启动之前,可以根据setSocketAddress更换地址
        //server.setSocketAddress(new InetSocketAddress(10160));
        server.start();//启动

        //管理客户端
        BusManager manager = server.getManager();//得到管理器
        Collection<Channel> allClient = manager.getAllClient();//得到所有客户端
        Optional<Channel> client = manager.getClient("key");//得到特定key的客户端,key为channel.id().asLongText()
        manager.addOnRegisterChannelListener(new BusManager.OnRegisterChannelListener() {
            @Override
            public void onHandler(Manager<String, Channel> manager, String key, Channel value) {
                //回调客户端注册事件
            }
        });
        manager.addOnUnRegisterChannelListener(new BusManager.OnUnRegisterChannelListener() {
            @Override
            public void onHandler(Manager<String, Channel> manager, String key, Channel value) {
                //回调客户端取消注册事件
            }
        });
        //manager.removeOnRegisterChannelListener();移除客户端注册事件监听
        //manager.removeOnUnRegisterChannelListener();移除客户端取消注册事件监听
        manager.resetManager();//移除所有监听器

        //消息处理
        BusPipeline pipeline = server.getPipeline();//得到消息管道
        //处理读取
        pipeline.registerReadMessageHandlers(new Consumer<BusMessage>() {
            @Override
            public void accept(BusMessage busMessage) {
                String id = busMessage.getId();         //客户端的ID
                byte[] object = busMessage.getObject(); //客户端发来的数据
            }
        });
        //处理消息读取计数
        pipeline.registerReadCountHandlers(new Consumer<Long>() {
            @Override
            public void accept(Long aLong) {

            }
        });
        //处理读取消息错误
        pipeline.registerReadMessageExceptionHandlers(new Consumer<Exception>() {
            @Override
            public void accept(Exception e) {

            }
        });

        //处理发送,当将消息发送到消息队列中后,将会有个默认处理写的监听器处理发送客户端事件,
        // 这个接口主要用于发送数据的判断的,或者移除默认的,写一个也行。
        pipeline.registerWriteMessageHandlers(new Consumer<BusMessage>() {
            @Override
            public void accept(BusMessage busMessage) {
                String id = busMessage.getId();         //客户端的ID
                byte[] object = busMessage.getObject(); //客户端发来的数据
            }
        });
        //处理写入消息计数
        pipeline.registerWriteCountHandlers(new Consumer<Long>() {
            @Override
            public void accept(Long aLong) {

            }
        });
        //处理写入消息计数
        pipeline.registerWriteMessageExceptionHandlers(new Consumer<Exception>() {
            @Override
            public void accept(Exception e) {

            }
        });
        /*************还要与之相对应的取消监听的方法,在其前面加上un即可***************************************/
        //pipeline.start();该方法是启动处理的线程,由server调用
        //pipeline.destory();销毁管道,调用后将无法继续使用,由server调用,server停止后将销毁,后续无法继续使用服务器对象。
        pipeline.setReadMessageDispose(new Function<BusMessage, BusMessage>() {
            @Override
            public BusMessage apply(BusMessage busMessage) {
                //消息处理器,在处理接收信息之前,对信息进行处理
                return null;
            }
        });
        pipeline.setWriteMessageDispose(new Function<BusMessage, BusMessage>() {
            @Override
            public BusMessage apply(BusMessage busMessage) {
                //消息处理器,在处理发送信息之前,对信息进行处理
                return null;
            }
        });

        long readCount = pipeline.readCount();//读计数
        long writeCount = pipeline.writeCount();//写计数

    }
}

随便用,如果用人用的话。

空文件

简介

一个简单基于Netty编写的的TCP服务器依赖 展开 收起
取消

贡献者

全部

近期动态

加载更多
不能加载更多了
1
https://gitee.com/Lqzhi/GeneralBusServer.git
git@gitee.com:Lqzhi/GeneralBusServer.git
Lqzhi
GeneralBusServer
GeneralBusServer
master

搜索帮助