smart-netbox

一个基于Netty的TCP/WebSocket服务端网络框架,性能高效,稳定,简单易上手

License

License

Categories

Categories

Net
GroupId

GroupId

com.iih5
ArtifactId

ArtifactId

smart-netbox
Last Version

Last Version

2.3.1
Release Date

Release Date

Type

Type

jar
Description

Description

smart-netbox
一个基于Netty的TCP/WebSocket服务端网络框架,性能高效,稳定,简单易上手
Source Code Management

Source Code Management

https://github.com/xueyi123/smart-netbox.git

Download smart-netbox

How to add to project

<!-- https://jarcasting.com/artifacts/com.iih5/smart-netbox/ -->
<dependency>
    <groupId>com.iih5</groupId>
    <artifactId>smart-netbox</artifactId>
    <version>2.3.1</version>
</dependency>
// https://jarcasting.com/artifacts/com.iih5/smart-netbox/
implementation 'com.iih5:smart-netbox:2.3.1'
// https://jarcasting.com/artifacts/com.iih5/smart-netbox/
implementation ("com.iih5:smart-netbox:2.3.1")
'com.iih5:smart-netbox:jar:2.3.1'
<dependency org="com.iih5" name="smart-netbox" rev="2.3.1">
  <artifact name="smart-netbox" type="jar" />
</dependency>
@Grapes(
@Grab(group='com.iih5', module='smart-netbox', version='2.3.1')
)
libraryDependencies += "com.iih5" % "smart-netbox" % "2.3.1"
[com.iih5/smart-netbox "2.3.1"]

Dependencies

compile (4)

Group / Artifact Type Version
com.iih5 : smart-actor jar 1.1
io.netty : netty-all jar 4.0.23.Final
org.slf4j : slf4j-api jar 1.7.21
com.google.protobuf : protobuf-java jar 2.6.1

Project Modules

There are no modules declared in this project.

##一个TCP/WebSocket服务端网络框架,性能高效,稳定,简单易上手 ##服务端使用说明 ###创建服务端
最简单的默认配置启动服务端
NetBoxEngine boxEngine = new NetBoxEngine();
boxEngine.start();
自定义配置启动服务端
NetBoxEngineSetting setting = new NetBoxEngineSetting();
setting.setBasePackage("com.iih5.server");
setting.setPort(9230);
setting.setProtocolCoder(new TcpForDefaultProtoEncoder(),new TcpForDefaultProtoDecoder());
setting.setDebug(true);
NetBoxEngine boxEngine = new NetBoxEngine();
boxEngine.setSettings(setting);
boxEngine.start(); ###配置说明
NetBoxEngineSetting 是 NetBoxEngine 的配置类,字段如下
void setPort(int port) //监听端口
void setBossThreadSize(int bossThreadSize)//设置监听线程数量
void setWorkerThreadSize(int workerThreadSize)//设置框架工作线程数量
void setBasePackage(String basePackage)//设置注解扫描路径
void setPlayerThreadSize(int playerThreadSize)//设置用户操作线程数
void setDebug(boolean debug)//设置调试模式,true为调试模式
void setProtocolCoder(Object encode,Object decode)//设置编码/解码,不设置则这采用默认TCP的 ProtocolDecoder2/ProtocolEncoder2 ##SmartNetBox 默认自带的TCP/WebSocket-Binary传输协议格式
/**
** 包格式:包头(byte=1)+包长度(int=4)+消息码(short=2)+加密段(byte=1)+数据段(byte[])
1)包头 :表示数据包合法性
2)包长度 :表示整个数据的长度(包含用于表示长度本身的字节)
3)消息码 :表示数据包类型
4)加密段 :表示数据段是否加密,采用什么加密算法
5)数据段 :采用byte[]形式存放*/ ##SmartNetBox WebSocket 文本传输协议
包格式:【协议ID】#【加密类型】#【内容】,比如 10001#0#hello world! ##消息接受处理
创建一个类,然后接入@Request注解,标识这是个handler类,@Protocol()注解标识协议处理,如下:
@Request
public class TestHandler {
@Protocol(value=2001)
public void test(Message msg, ISession session) throws Exception {
Example.Message.Builder message = (Example.Message.Builder)msg.parseObject(Example.Message.newBuilder());
log.info("name====="+message.getText());
log.info("id="+message.getNumber());
session.send(msg);
}
} ##处理连接和断开事件
继承ConnectExtension基类,接入@InOut()注解,标识这是个断开或连接处理类,然后重写connect和disConnect方法
@InOut("connect/disconnect callback")
public class DisConnectExtension extends ConnectExtension {
public void connect(ISession session) {
log.info("连接成功");
}
public void disConnect(ISession session) {
log.info("断开连接");
}
} ##Session管理 SessionManager是个全局的Session管理类,利用这个类管理Session的各个行为,比如 SessionManager.getInstance().getAllSessions()

客户端使用说明

客户端的使用就比较灵活些,客户端是java的可以直接使用SmartNetBox的 编码/解码器,可以自己定义,如果是其他语言,则需要自己根据 协议自己定义 ##目前已经提供java/c#客户端API,后续后继续加上各个语言的客户端API,方便同学们使用 ##例子在example模块下面 ##API查看地址 http://doc.iih5.com/smart-netbox/index.html

Versions

Version
2.3.1
2.3
2.2.2
2.2
2.1.6
2.1.4
2.1.3
2.1.2
2.1
2.0
1.2
1.1
1.0