设置 Addr

r := znet.New()

// 默认端口是3788,如果要修改可以以下方式
r.SetAddr(":5000")
r.SetAddr("127.0.0.1:3781")

// 需要绑定多个端口
r.AddAddr(":3782")

// 生成私钥
// openssl genrsa -out server.key 2048
// 生成证书
// openssl req -new -x509 -key server.key -out server.crt -days 3650

// 要使用 HTTPS 则只要传递证书文件
r.AddAddr(":443",znet.TlsCfg{
		// http 重定向 https
		// HTTPAddr: ":80",
		// HTTPProcessing: "<https://zjhttps.73zls.com>",

		Key:  "key/domain.key",
		Cert: "key/domain.pem",// or domain.crt
})

// 如果需要多服务只要再 New 一个即可
r2 := znet.New()
r2.SetAddr(":6666")

// 如果需要随机端口,使用 ":0" 即可
r.SetAddr(":0")

// 启动服务
znet.Run()

设置运行模式

r.SetMode(znet.DebugMode) // 开发模式
r.SetMode(znet.TestMode) // 测试模式
r.SetMode(znet.ProdMode) // 生产模式(默认)

接入到其他框架

接入到 Gin

package main

import (
  "github.com/gin-gonic/gin"
  "github.com/sohaha/zlsgo/znet"
)

func main() {
  r := znet.New()
	
  g := gin.Default()
  g.GET("/*", func(c *gin.Context) {
    // 转交 znet 接收处理
    r.ServeHTTP(c.Writer, c.Request)
  })
	
  g.Run()
}

模板

设置模板目录

// 使用 resource 目录作为模板
r.LoadHTMLGlob("resource")

// 设置模板自定义函数,必须在 LoadHTMLGlob 之前
r.SetTemplateFuncMap(template.FuncMap{
  "test": func() string {return ""},
})

模板示例

// 定义模板名称,调用时候使用
// c.Template(200, "user/index.html", map[string]interface{}{"name":"Pikachu"})
{{ define "user/index.html" }}
  {{template "public/header" .}}
{{ end }}

自定义模板引擎

// 只要实现 znet.Template 接口即可

type Template interface {
	Load() error
	Render(io.Writer, string, interface{}, ...string) error
}

r.SetTemplate(xxx)

设置超时时间

// ReadTimeout WriteTimeout
r.SetTimeout(10 * time.Second)

警告:请看清下图,如果是要控制 HTTP 请求时间请使用 timeout 中间件