[TOC]
- IRIS自定义监听器简单监听器目录结构代码示例linux监听器目录结构代码示例
IRIS自定义监听器
简单监听器
目录结构
主目录customListener
—— main.go
代码示例
main.go
package mainimport ( "net" "github.com/kataras/iris")func main() { app := iris.New() app.Get("/", func(ctx iris.Context) { ctx.Writef("Hello from the server") }) app.Get("/mypath", func(ctx iris.Context) { ctx.Writef("Hello from %s", ctx.Path()) }) //创建任何自定义tcp侦听器,unix sock文件或tls tcp侦听器。 l, err := net.Listen("tcp4", ":8080") if err != nil { panic(err) } //使用自定义侦听器 app.Run(iris.Listener(l))}
linux监听器
目录结构
主目录unixReuseport
—— main.go —— main_windows.go
代码示例
main.go
// +build linux darwin dragonfly freebsd netbsd openbsd rumprunpackage mainimport ( //包tcplisten提供各种可自定义的TCP net.Listener //与性能相关的选项: // - SO_REUSEPORT。 此选项允许线性扩展服务器性能 在多CPU服务器上。 //有关详细信息,请参阅https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/。 // - TCP_DEFER_ACCEPT。 此选项期望服务器从接受的读取写入之前的连接。 // - TCP_FASTOPEN。 有关详细信息,请参阅https://lwn.net/Articles/508865/。 "github.com/valyala/tcplisten" "github.com/kataras/iris")//注意只支持linux系统// $ go get github.com/valyala/tcplisten// $ go run main.gofunc main() { app := iris.New() app.Get("/", func(ctx iris.Context) { ctx.HTML("<b>Hello World!</b>") }) listenerCfg := tcplisten.Config{ ReusePort: true, DeferAccept: true, FastOpen: true, } l, err := listenerCfg.NewListener("tcp", ":8080") if err != nil { panic(err) } app.Run(iris.Listener(l))}
main_windows.go
// +build windowspackage mainfunc main() { panic("windows operating system does not support this feature")}
