授权协议: Apache
开发语言: Google Go
操作系统: 跨平台
收录时间: 2019-11-29
提 交 者: limpo1989

go-netty 是大量参考了netty的设计并融合Golang本身的协程特性而开发的一款高性能网络库

Feature (特性)

  • 可扩展多种传输协议,并且默认实现了 TCP, KCPWebsocket
  • 可扩展多种解码器,默认实现了常见的编解码器
  • 基于责任链模型的流程控制
  • 核心库零依赖

Documentation (文档)

GoDoc

Examples (示例)

使用

创建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(EchoHandler{"Server"})
})

配置服务器(客户端)所使用的传输协议

bootstrap.Transport(tcp.New())

开始监听端口并开始提供服务,直到收到指定信号后退出

bootstrap.Listen("tcp://0.0.0.0:6565").RunForever(os.Kill, os.Interrupt)

LogHandler 处理器

type EchoHandlerstruct {
    role string
}

func (l EchoHandler) 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 EchoHandler) HandleRead(ctx netty.InboundContext, message netty.Message) {
    fmt.Println(l.role, "->", "handle read:", message)

    // 向后续的handler传递控制权
    // 如果是最后一个handler或者需要中断请求可以不用调用
    ctx.HandleRead(message)
}

func (l EchoHandler) HandleInactive(ctx netty.InactiveContext, ex netty.Exception) {
    fmt.Println(l.role, "->", "inactive:", ctx.Channel().RemoteAddr(), ex)

    // 向后续的handler传递控制权
    // 如果是最后一个handler或者需要中断请求可以不用调用
    ctx.HandleInactive(ex)
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

go-netty 的相关资讯

go-netty 的相关博客

netty学习 - 编译netty

一 、配置git (未安装git, 可以先安装git) git config --global core.autocrlf true   配置之后,git将会根据使用者的系统...

Netty:初识Netty

前文总结了NIO的内容,有了NIO的一些基础之后,我们就可以来看下Netty。Netty是Java领域的高性能网络传输框架,RPC的技术核心...

Netty:初识Netty

前文总结了NIO的内容,有了NIO的一些基础之后,我们就可以来看下Netty。Netty是Java领域的高性能网络传输框架,RPC的技术核心...

Netty 笔记--Netty 简介

Netty是一个异步和事件驱动的网络应用程序框架,用于快速开发可维护的高性能网络服务器和客户端。 Netty 是一个基于 Java NIO...

初学Netty-Netty Helloword

Netty是什么? 关于netty的定义网上有很多种,我们还是回到官网上寻找 官网直译后:Netty是 一个异步事件驱动的网络应用程序框...

NIO、Netty(Netty基础)

一、概述 Netty是一个Java的开源框架。提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服...

Netty

1.Netty 是什么? Netty 是一款基于 NIO(Nonblocking I/O,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞I...

Netty

作者:知乎用户 链接:https://www.zhihu.com/question/24322387/answer/282001188 来源:知乎 著作权归作者所有。商业转载请...

netty

##1.Netty 简介 Netty is a NIO client server framework which enables quick and easy development of network application...

go-netty 的相关问答

还没有任何问答,马上提问

评论 (0)

加载中
更多评论
0 评论
8 收藏
分享
在线直播报名
返回顶部
顶部