bind:请求的地址在其上下文中无效

我在 golang 上开发了一个机器人。使用 ubuntu 20.01 OS 在 vds 上启动它,效果很好,但是当我开始调试我的代码时,这是一个问题。因此,我决定将我的 PC 用作 VDS:我打开了一个8443端口等。但是当main.go启动时,我收到一个错误:


listen tcp [ip]:8443: bind: The requested address is not valid in its context.

我的代码:


package main


import (

    "./configuration"

    "./get_data"

    "encoding/json"

    "fmt"

    tgBotApi "github.com/go-telegram-bot-api/telegram-bot-api"

    "io/ioutil"

    "net/http"

    "strings"

    "time"

)


var (

    NewBot, BotErr = tgBotApi.NewBotAPI(configuration.BOT_TOKEN)

)

func setWebhook(bot *tgBotApi.BotAPI) {

    webHookInfo := tgBotApi.NewWebhookWithCert(fmt.Sprintf("https://%s:%s/%s",

        configuration.BOT_HOST, configuration.BOT_PORT, configuration.BOT_TOKEN), configuration.CERT_FILE)

    _, err := bot.SetWebhook(webHookInfo)

    if err != nil {

        fmt.Println(err)

    }

}

func main () {

    fmt.Println("OK", time.Now().Unix(), time.Now(), time.Now().Weekday())

    setWebhook(NewBot)


    message := func (w http.ResponseWriter, r *http.Request) {

        text, _ := ioutil.ReadAll(r.Body)

        var botText = get_data.BotMessage{}

        _ = json.Unmarshal(text, &botText)

        chatGroup := int64(botText.Message.Chat.Id)

        botCommand := strings.Split(botText.Message.Text, "@")[0]


        /*markup := tgBotApi.InlineKeyboardMarkup{

            InlineKeyboard: [][]tgBotApi.InlineKeyboardButton{

                []tgBotApi.InlineKeyboardButton{

                    tgBotApi.InlineKeyboardButton{Text: "start"},

                },

            },


我已经成了类似本主题的证书:为 Telegram Webhook 创建和使用自签名证书的简单方法是什么?


此外,我试图设置 0.0.0.0 而不是我的公共 IP,然后出现此错误:


Bad Request: bad webhook: IP address 0.0.0.0 is reserved


Helenr
浏览 1125回答 1
1回答

婷婷同学_

该错误bind: The requested address is not valid in its context.表明该地址不属于您机器上的网络接口。很可能,有一个路由器/负载平衡器/等......具有实际的公共地址,它将流量转发到您的机器。您需要拆分您使用的地址:您的本地地址(请参阅ifconfig)或0.0.0.0所有接口作为传递给的地址http.ListenAndServeTLS传入的作为回调地址的公共地址NewWebhookWithCert
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go