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

时间:2015-12-30 12:48:21

标签: go websocket

我正在使用这个ip 192.168.1.55。我需要发送一些数据到192.168.1.137。我正在使用此代码

package main

import (
    "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 个答案:

答案 0 :(得分:1)

处理的路径是错误的。您必须定义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来测试您的代码。

答案 1 :(得分:0)

他想要联系,而不是倾听。

// 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
    }
}