代码如下:
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/ 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。
我期望做一个简单的聊天室代码练个手,百度了半天都是不能用的,这个代码看着简洁,但是运行没报错,就是访问不了。
可能端口被限了。你换其他端口试试,我的6666端口和6000端口也不行,但是我换到8000或者9000的端口就好了。