直接使用官方子包可以实现websocket协议,
golang.org/x/net/websocket
如果在这个目录没有这个包就去github下载net库,放进这个目录$GOPATH/src/golang.org/x/net就行了
服务端代码:
package main import ( "time" lognet/httpgolang.org/x/net/websocket" ) func main(){ http.HandleFunc(/,index) http.Handle(/websocketstart server) err:=http.ListenAndServe(:1234http.Request){ res.Write([]byte(hello world)) } func instantMessage(w *websocket.Conn) { var error error for { var reply string if error= websocket.Message.Receive(w,&reply);error!=nil{ log.Println(接受消息失败客户端:服务端:"+reply+time.Now().String() log.Println(msg) if error = websocket.Message.Send( nil { log.Println(发送消息失败) break } } }
客户端代码:
<html> head> title>好好学习</bodyscript type="text/javascript"> var sock = null; // var wsuri = "wss://127.0.0.1:8080"; //本地的地址 是可以改变的哦 wsuri "ws://localhost:1234/websocket; 本地的地址 是可以改变的哦 window.onload function() { 可以看到客户端JS,很容易的就通过WebSocket函数建立了一个与服务器的连接sock,当握手成功后,会触发WebScoket对象的onopen事件,告诉客户端连接已经成功建立。客户端一共绑定了四个事件。 console.log(开始了 onload); sock new WebSocket(wsuri); 建立连接后触发 sock.onopen () { console.log( 建立连接后触发 connected to " + wsuri); } 关闭连接时候触发 sock.onclose (e) { console.log(关闭连接时候触发 connection closed ( e.code + )); } 收到消息后触发 sock.onmessage 收到消息后触发 message received: e.data); document.getElementById('receive).innerHTML=e.data; } 发生错误的时候触发 sock.onerror (e) { console.log(发生错误时候触发wsuri) } }; 如果sock被关闭掉了 这里 也会报错的啊 send() { msg document.getElementById(message).value; sock.send(msg); }; scripth1>客户端formp>发送: textarea id="message" >我是陶士涵textarea>接收: ="receive" ></button onclick="send();">给服务器发送消息button>