Releases: luyu6056/gnet
Releases · luyu6056/gnet
更新go.mod到1.20
v1.4.0 更新到go1.20版本
优化平滑热重启
修改unix下写删在epoll内完成
去掉独立的loopout协程
修改conn写删,在epoll内完成
增加一个writetimeout选项
测试了一些其他平台
合并一部分2.0代码
保留1.0api,更新了部分代码
修复mac和windows下的bug
v1.3.7 修复mac与windows下的bug
修复windows下tcp连接close后仍在read导致的nil
增加一个tcpClose结构体,当read出现err之后,传入el.ch并return,以保证tcpClose是在read之后执行,并且tcpClose之后不会在进行read。
修复linux下asyncWrite错误
v1.3.5 修复linux下AsyncWrite没发送Encode
修复linux下dialtcp地址错误
v1.3.4 修复linux下dialtcp地址错误
gnet客户端tcp4实现
使用例子
var GnetClient = gnet.Client(&gnetClient{}, gnet.WithCodec(&RpcCodec{}), gnet.WithTCPNoDelay(true))
func dail(network, addr string, rpc *RpcClient) (net.Conn, error) {
c, err := GnetClient.Dial(network, addr)
if err != nil {
return nil, err
}
c.SetContext(rpc)
conn := newClient(c)
return conn, err
}
type gnetClient struct {
*gnet.EventServer
}
func (*RpcClient) handleRead() {
}
func (rs *gnetClient) OnOpened(c gnet.Conn) (out []byte, action gnet.Action) {
return
}
func (rs *gnetClient) OnClosed(c gnet.Conn, err error) (action gnet.Action) {
if rpc, ok := c.Context().(*RpcClient); ok {
rpc.reconnect <- nil
}
return gnet.None
}
func (rs *gnetClient) React(data []byte, c gnet.Conn) (action gnet.Action) {
}