- 本文实现一个Echo TCP Server
- 完整代码:https://github.com/csgopher/go-redis
- 本文涉及以下文件:
handler:处理连接,客户端传来的指令
server:服务端
echo:测试
main
interface/tcp/Handler.go
type Handler interface {
Handle(ctx context.Context, conn net.Conn)
Close() error
}
- Handler:业务逻辑的处理接口
- Handle(ctx context.Context, conn net.Conn) 处理连接
- Handle(ctx context.Context, conn net.Conn) 处理连接
tcp/server.go
type Config struct {
Address string
}
func ListenAndServeWithSignal(cfg *Config, handler tcp.Handler) error {
closeChan := make(chan struct{
})
listen, err := net.Listen("tcp", cfg.Address)
if err != nil {
return err
}
logger.Info("start listen")
ListenAndServe(listen, handler, closeChan)
return nil
}
func ListenAndServe(listener net.Listener,
handler tcp.Handler,
closeChan <-