golang Iris运行多个应用的实现
作者:rubys007
本文主要介绍了golang Iris运行多个应用的实现,在Iris里面,提供了一种方式可以让我们同时运行多个应用,具有一定的参考价值,感兴趣的可以了解一下
在 Iris 里面,提供了一种方式可以让我们同时运行多个应用:
这里说的应用只是一个 Iris 框架实例,这个实例可以有完全不同的路由定义、中间件等。
不同端口不同应用
package main
import (
"log"
"net/http"
"time"
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/middleware/recover"
"golang.org/x/sync/errgroup"
)
var g errgroup.Group
func startApp1() error {
app := iris.New().SetName("app1")
app.Use(recover.New())
app.Get("/", func(ctx iris.Context) {
ctx.JSON(iris.Map{
"code": iris.StatusOK,
"message": "Welcome server 1",
})
})
app.Build()
return app.Listen(":8080")
}
func startApp2() error {
app := iris.New().SetName("app2")
app.Use(recover.New())
app.Get("/", func(ctx iris.Context) {
ctx.JSON(iris.Map{
"code": iris.StatusOK,
"message": "Welcome server 2",
})
})
return app.Listen(":8081")
}
func main() {
g.Go(startApp1)
g.Go(startApp2)
if err := g.Wait(); err != nil {
log.Fatal(err)
}
}
在这个例子中,我们监听了两个端口 8080、8081,我们可以通过这两个端口来访问这两个应用。
不同域名不同应用
这个就有点类似于 nginx 了,同一个端口可以同时监听多个域名的请求:
package main
import (
"github.com/kataras/iris/v12"
"github.com/kataras/iris/v12/apps"
"github.com/kataras/iris/v12/middleware/recover"
)
func main() {
app3 := iris.New().SetName("app3")
app3.Use(recover.New())
app3.Get("/", func(ctx iris.Context) {
ctx.WriteString("ha3")
})
app4 := iris.New().SetName("app4")
app4.Use(recover.New())
app4.Get("/", func(ctx iris.Context) {
ctx.WriteString("ha4")
})
switcher := apps.Switch(apps.Hosts{
apps.Host{
Pattern: "app3.local",
Target: app3,
},
apps.Host{
Pattern: "app4.local",
Target: app4,
},
})
switcher.Listen(":9010")
}
在这个例子中,监听了 9010 端口,但是通过 app3.local 和 app4.local 去访问的时候,结果是不一样的。
到此这篇关于golang Iris运行多个应用的实现的文章就介绍到这了,更多相关golang Iris运行多应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
