go 代码实现的简易聊天室访问不了,麻烦大佬帮忙看看哪里出问题了?

作者站长头像
站长
· 阅读数 14

代码如下:

package main

import (
    "fmt"
    "golang.org/x/net/websocket"
    "net/http"
    "time"
)

type Connect struct {
    wc *websocket.Conn
    sc chan []byte
}
var H = make(map[*Connect]bool, 2)
func (c *Connect) writer() {
    for msg := range c.sc {
        fmt.Printf("%#v\n", c.sc)
        c.wc.Write(msg)
    }
}

func (c *Connect) reader() {
    for range time.NewTicker(time.Second).C {
        buf := make([]byte, 1500)
        n, err := c.wc.Read(buf)
        if err != nil {
            fmt.Println(err)
        }

        fmt.Println(string(buf[:n]))
        if len(string(buf[:n])) < 1 {
            continue
        }
        for conn := range H {
            // fmt.Printf("%#v\n", conn)
            conn.sc <- buf[:n]
        }
    }
}

func msg(wc *websocket.Conn) {
    c := &Connect{
        wc: wc,
        sc: make(chan []byte),
    }
    // H = Hub{r: make(chan *Connect, 100)}
    if c.wc != nil {
        H[c] = true
    }

    go c.writer()
    c.reader()
}

func main() {
    http.Handle("/", http.FileServer(http.Dir("./")))
    http.Handle("/msg", websocket.Handler(msg))
    fmt.Println("start server at 6666")
    http.ListenAndServe(":6666", nil)
}

为何我通过 http://localhost:6666/ 访问不了呢?

页面提示:

无法访问此网站网址为 http://localhost:6666/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。

我期望做一个简单的聊天室代码练个手,百度了半天都是不能用的,这个代码看着简洁,但是运行没报错,就是访问不了。

回复
1个回答
avatar
test
2024-06-24

可能端口被限了。你换其他端口试试,我的6666端口和6000端口也不行,但是我换到8000或者9000的端口就好了。

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容