golang Iris運(yùn)行多個(gè)應(yīng)用的實(shí)現(xiàn)
在 Iris 里面,提供了一種方式可以讓我們同時(shí)運(yùn)行多個(gè)應(yīng)用:
這里說的應(yīng)用只是一個(gè) Iris 框架實(shí)例,這個(gè)實(shí)例可以有完全不同的路由定義、中間件等。
不同端口不同應(yīng)用
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)
}
}
在這個(gè)例子中,我們監(jiān)聽了兩個(gè)端口 8080、8081,我們可以通過這兩個(gè)端口來訪問這兩個(gè)應(yīng)用。
不同域名不同應(yīng)用
這個(gè)就有點(diǎn)類似于 nginx 了,同一個(gè)端口可以同時(shí)監(jiān)聽多個(gè)域名的請(qǐng)求:
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")
}
在這個(gè)例子中,監(jiān)聽了 9010 端口,但是通過 app3.local 和 app4.local 去訪問的時(shí)候,結(jié)果是不一樣的。
到此這篇關(guān)于golang Iris運(yùn)行多個(gè)應(yīng)用的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)golang Iris運(yùn)行多應(yīng)用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang中Error的設(shè)計(jì)與實(shí)踐詳解
這篇文章主要為大家詳細(xì)介紹了Golang中Error的設(shè)計(jì)以及是具體如何處理錯(cuò)誤的相關(guān)知識(shí),文中的示例代碼簡潔易懂,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-08-08
golang操作連接數(shù)據(jù)庫實(shí)現(xiàn)mysql事務(wù)示例
這篇文章主要為大家介紹了golang操作連接數(shù)據(jù)庫實(shí)現(xiàn)mysql事務(wù)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-04-04
go語言題解LeetCode1122數(shù)組的相對(duì)排序
這篇文章主要為大家介紹了go語言題解LeetCode1122數(shù)組的相對(duì)排序,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
基于Golang實(shí)現(xiàn)Excel表格的導(dǎo)入導(dǎo)出功能
最近項(xiàng)目開發(fā)中有涉及到Excel的導(dǎo)入與導(dǎo)出功能,特別是導(dǎo)出表格時(shí)需要特定的格式,所以本文給大家介紹了基于Golang實(shí)現(xiàn)Excel表格的導(dǎo)入導(dǎo)出功能,文中通過代碼示例和圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-12-12
詳解Go如何實(shí)現(xiàn)協(xié)程并發(fā)執(zhí)行
線程是通過本地隊(duì)列,全局隊(duì)列或者偷其它線程的方式來獲取協(xié)程的,目前看來,線程運(yùn)行完一個(gè)協(xié)程后再從隊(duì)列中獲取下一個(gè)協(xié)程執(zhí)行,還只是順序執(zhí)行協(xié)程的,而多個(gè)線程一起這么運(yùn)行也能達(dá)到并發(fā)的效果,接下來就給給大家詳細(xì)介紹一下Go如何實(shí)現(xiàn)協(xié)程并發(fā)執(zhí)行2023-08-08
詳解Go語言實(shí)現(xiàn)線性查找算法和二分查找算法
線性查找又稱順序查找,它是查找算法中最簡單的一種。二分查找,也稱折半查找,相比于線性查找,它是一種效率較高的算法。本文將用Go語言實(shí)現(xiàn)這兩個(gè)查找算法,需要的可以了解一下2022-12-12
Golang 字符串與字節(jié)數(shù)組互轉(zhuǎn)的實(shí)現(xiàn)
在Go語言中,我們經(jīng)常在字符串和切片之間進(jìn)行轉(zhuǎn)換,本文就詳細(xì)的介紹一下Golang 字符串與字節(jié)數(shù)組互轉(zhuǎn)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02

