内容简介:GO-NETTY github.com/go-netty/go-netty Introduction (介绍) go-netty is heavily inspired by netty go-netty 大量参考了netty的设计并融合Golang本身的协程特性而开发的一款高性能网络库 Feature (特性) Exten...
GO-NETTY
Introduction (介绍)
go-netty is heavily inspired by netty
go-netty 大量参考了netty的设计并融合Golang本身的协程特性而开发的一款高性能网络库
Feature (特性)
- Extensible multi-transport protocol support, default support TCP, KCP, Websocket
- 可扩展多种传输协议,并且默认实现了 TCP, KCP, Websocket
- Extensible multi-codec support
- 可扩展多种解码器,默认实现了常见的编解码器
- Based on responsibility chain model
- 基于责任链模型的流程控制
TODO (待完成)
- test case
- docs
- examples
Examples (例子)
Usage (使用)
创建bootstrap, 用于提供服务或者对外建立连接
var bootstrap = netty.NewBootstrap()
配置服务连接的处理器 (同样还有一个ClientInitializer 对应客户端连接处理器配置)
bootstrap.ChildInitializer(func(channel netty.Channel) {
channel.Pipeline().
// 按照自定义协议解码帧(2字节的长度字段)
AddLast(frame.LengthFieldCodec(binary.LittleEndian, 1024, 0, 2, 0, 0)).
// 消息内容为文本格式(可自定义为 json,protobuf 等编解码器)
AddLast(format.TextCodec()).
// 处理消息
AddLast(LogHandler{"Server"})
})
配置服务器(客户端)所使用的传输协议
bootstrap.Transport(tcp.New())
开始监听端口并开始提供服务,直到收到指定信号后退出
bootstrap.Listen("tcp://0.0.0.0:6565").RunForever(os.Kill, os.Interrupt)
LogHandler 处理器
type LogHandler struct {
role string
}
func (l LogHandler) HandleActive(ctx netty.ActiveContext) {
fmt.Println(l.role, "->", "active:", ctx.Channel().RemoteAddr())
// 给对端发送一条消息,将进入如下流程(视编解码配置)
// Text -> TextCodec -> LengthFieldCodec -> Channel.Write
// 文本 文本编码 组装协议格式(长度字段) 网络发送
ctx.Write("Hello I'm " + l.role)
// 向后续的handler传递控制权
// 如果是最后一个handler或者需要中断请求可以不用调用
ctx.HandleActive()
}
func (l LogHandler) HandleRead(ctx netty.InboundContext, message netty.Message) {
fmt.Println(l.role, "->", "handle read:", message)
// 向后续的handler传递控制权
// 如果是最后一个handler或者需要中断请求可以不用调用
ctx.HandleRead(message)
}
func (l LogHandler) HandleInactive(ctx netty.InactiveContext, ex netty.Exception) {
fmt.Println(l.role, "->", "inactive:", ctx.Channel().RemoteAddr(), ex)
// 向后续的handler传递控制权
// 如果是最后一个handler或者需要中断请求可以不用调用
ctx.HandleInactive(ex)
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Swoole + Laravel 实现高性能框架
- 高性能异步框架Celery入坑指南
- python高性能微服务框架japronto
- 腾讯高性能的图片框架 LKImageKit 正式开源
- 轻量级高性能PHP框架ycroute
- 腾讯高性能图计算框架Plato及其算法应用
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。