import (
//省略其他,引用了一个第三方库,github有源码,对websokcet的封装
"github.com/gorilla/websocket"
)
const (
serverPort = ":8086"
)
//设置连接参数,upgrader.Upgrade(w, r, nil),使用第三方库websocket获取websocket连接
var upgrader = websocket.Upgrader{
//允许跨域访问
//重载函数CheckOrigin
//函数名:fuc(参数) 返回值
CheckOrigin: func(r *http.Request) bool{
return true;
},
//设置websocket连接参数,成员变量赋值,读写buff缓冲区大小,
ReadBufferSize: 40*1024,
WriteBufferSize: 4*1024,
}
func serveWs(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return
}
//有了conn之后就可以根据业务需求读写数据,
conn.ReadMessage()
conn.WriteMessage(websocket.BinaryMessage,byte data)
conn.WriteMessage(websocket.TextMessage,"string data")
}
func main() {
http.HandleFunc("/ws", serveWs)
//一直阻塞监听端口,等待客户端连接
err := http.ListenAndServe(serverPort, nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
websocket服务端
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 说明 本例中对用户请求的响应均通过此类实现,此类为threading.Thread的子类,我们重写了run方法,当...
- 说明 此函数需要着重关注这个地方: nv是解除掩码后的数据,通过nv.encode()的方式编码后计算编码后的by...
- client每次连接server时需生成唯一sid 新建连接时(open),将sid作为key存入redis中并设...