您现在的位置是:首页 > 文章详情

go-netty 高性能网络框架

日期:2019-11-28点击:1184

GO-NETTY

github.com/go-netty/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) }
原文链接:https://www.oschina.net/news/111687/go-netty-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章