golang Iris运行多个应用的实现

 更新时间:2024年01月15日 09:08:03   作者: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)
    }
}

在这个例子中,我们监听了两个端口 80808081,我们可以通过这两个端口来访问这两个应用。

不同域名不同应用

这个就有点类似于 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运行多应用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Go语言之io.ReadAtLeast函数的基本使用和原理解析

    Go语言之io.ReadAtLeast函数的基本使用和原理解析

    io.ReadAtLeast函数是Go语言标准库提供的一个工具函数,能够从数据源读取至少指定数量的字节数据到缓冲区中,这篇文章主要介绍了io.ReadAtLeast函数的相关知识,需要的朋友可以参考下
    2023-07-07
  • golang 实现一个负载均衡案例(随机,轮训)

    golang 实现一个负载均衡案例(随机,轮训)

    这篇文章主要介绍了golang 实现一个负载均衡案例(随机、轮训),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04
  • Go语言基于viper的conf库进行配置文件解析

    Go语言基于viper的conf库进行配置文件解析

    在现代软件开发中,配置文件是不可或缺的一部分,如何高效地将这些格式解析到 Go 结构体中,一直是开发者的痛点,下面我们来看看如何使用conf进行配置文件解析吧
    2025-03-03
  • Golang使用Apache PLC4X连接modbus的示例代码

    Golang使用Apache PLC4X连接modbus的示例代码

    Modbus是一种串行通信协议,是Modicon公司于1979年为使用可编程逻辑控制器(PLC)通信而发表,这篇文章主要介绍了Golang使用Apache PLC4X连接modbus的示例代码,需要的朋友可以参考下
    2024-07-07
  • 详解go程序如何在windows服务中开启和关闭

    详解go程序如何在windows服务中开启和关闭

    这篇文章主要介绍了一个go程序,如何在windows服务中优雅开启和关闭,文中通过代码示例和图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • Go模块布局管理文档翻译理解

    Go模块布局管理文档翻译理解

    这篇文章主要为大家介绍了Go模块布局管理文档翻译理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Go语言的GOPATH与工作目录详解

    Go语言的GOPATH与工作目录详解

    这篇文章主要介绍了Go语言的GOPATH与工作目录详解,本文详细讲解了GOPATH设置、应用目录结构、编译应用等内容,需要的朋友可以参考下
    2014-10-10
  • 一文详解Golang连接kafka的基本操作

    一文详解Golang连接kafka的基本操作

    这篇文章主要为大家详细介绍了Golang中连接kafka的基本操作的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-03-03
  • 掌握Golang中的select语句实现并发编程

    掌握Golang中的select语句实现并发编程

    Golang中的select语句用于在多个通道间选择可读或可写的操作,并阻塞等待其中一个通道进行操作。可以用于实现超时控制、取消和中断操作等。同时,select语句支持default分支,用于在没有任何通道可操作时执行默认操作
    2023-04-04
  • Go语言实现动态解析JSON数据的多种方式

    Go语言实现动态解析JSON数据的多种方式

    本文主要介绍了Go语言实现动态解析JSON数据的多种方式,包括map[string]interface{}、interface{}、json.RawMessage及第三方库gjson/mapstructure,具有一定的参考价值,感兴趣的可以了解一下
    2025-05-05

最新评论