http探针实现

背景

项目在做三方推送时需要先判断三方服务是否存活,以避免不必要的错误推送

原理

利用HTTP的OPTIONS:这个方法极少使用。它用于获取当前URL所支持的方法。若请求成功,则它会在HTTP头中包含一个名为“Allow”的头,其中的值是所支持的方法,如“GET, POST”。这样就能够检测出服务是否支持该方法继而检测存活

示例代码

package httputils

import (
	"bytes"
	"errors"
	"io/ioutil"
	"net/http"
	"os"
)
//http 探针
func HttpProbe(httpPool *hcpool.Pool, url string) bool {
	req, _ := http.NewRequest("OPTIONS", url, nil)
	resp, _ := httpPool.Do(req)
	if resp != nil{
		defer resp.Body.Close()
		//fmt.Println("response code",resp.StatusCode)
		if resp.StatusCode == 200 {
			//ioutil.ReadAll(resp.Body)
			return true
		}
	}
	return false
}


//http检测
func httpProbe() {
	iotlogger.Info("启动探针")
	for {
		if cfg, ok := getPushCfg(config.System.Cid); ok == true {
			//推送数据
			if len(cfg.PushUrl) == 0 {
				iotlogger.Info("httpProbe pushUrl is null")
				continue
			}
			if httputils.HttpProbe(httpPool, cfg.PushUrl) {
				isLive = true
			} else {
				isLive = false
			}
			iotlogger.Debug("探测地址->%s ,是否存活->%t", cfg.PushUrl, isLive)

		}
		time.Sleep(time.Second * 10)
	}
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值