为了账号安全,请及时绑定邮箱和手机立即绑定

为什么这个Go程序建立websocket连接失败?

为什么这个Go程序建立websocket连接失败?

Go
万千封印 2021-12-06 14:59:32
我正在使用这个 ip 192.168.1.55。我需要向 192.168.1.137 发送一些数据。我正在使用此代码package mainimport (    "fmt"    "net/http"    "os"    "code.google.com/p/go.net/websocket")func Echo(ws *websocket.Conn) {    fmt.Println("Echoing")    for n := 0; n < 10; n++ {        msg := "Hello  " + string(n+48)        fmt.Println("Sending to client: " + msg)        err := websocket.Message.Send(ws, msg)        if err != nil {            fmt.Println("Can't send")            break        }    }}func main() {    http.Handle("http://192.168.1.137", websocket.Handler(Echo))    http.ListenAndServe(":4242", nil)}func checkError(err error) {    if err != nil {        fmt.Println("Fatal error ", err.Error())        os.Exit(1)    }}但是我的 ip 没有连接到我上面提到的另一个 ip (192.168.1.137)。如何解决这个问题?
查看完整描述

2 回答

?
largeQ

TA贡献2039条经验 获得超7个赞

给出的处理路径是错误的。您必须定义 websocket 应该连接的路由。


func main() {

    http.Handle("http://192.168.1.137", websocket.Handler(Echo))

    http.ListenAndServe(":4242", nil)

}

应该


func main() {

    http.Handle("/", websocket.Handler(Echo))

    http.ListenAndServe(":4242", nil)

}

您可以使用Websocket.org来测试您的代码。


查看完整回答
反对 回复 2021-12-06
?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

他想连接,而不是倾听。


// you need to make sure this values are correct. and server is listening on "192.168.1.137:4242"

origin := "http://192.168.1.55/"

url := "ws://192.168.1.137:4242"


ws, err := websocket.Dial(url, "", origin)

if err != nil {

    log.Fatal(err)

}


for n := 0; n < 10; n++ {

    msg := "Hello  " + strconv.Itoa(n)

    fmt.Println("Sending to client: " + msg)

    err := ws.Write([]byte(msg))

    if err != nil {

        fmt.Println("Can't send")

        break

    }

}


查看完整回答
反对 回复 2021-12-06
  • 2 回答
  • 0 关注
  • 281 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信