🏗️

服务配置

设置 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 中间件
notion image