go websocket

cd go/src && mkdir -p golang.org/x

git clone https://github.com/golang/net
git clone https://github.com/golang/crypto

go get golang.org/x/net/websocket
/*
cd go/src && mkdir -p golang.org/x

git clone https://github.com/golang/net
git clone https://github.com/golang/crypto

go get go get golang.org/x/net/websocket

*/

package main

import(
    "fmt"
    "log"
    "html/template"
    "net/http"
    "golang.org/x/net/websocket"
)
func web(w http.ResponseWriter,r *http.Request){
    fmt.Println(r.Method)
    if r.Method == "GET" {
		t,_ := template.ParseFiles("websocket.html")
		t.Execute(w,nil)
    }
}

func Echo(ws *websocket.Conn){
    var err error
    for {
		var reply string
		err = websocket.Message.Receive(ws,&reply)
		if err != nil {
			fmt.Println("can not receive")
			break
		}
		fmt.Println("received back from client:" + reply)
		msg := "received " + reply

		fmt.Println("send to client:" + msg)
		
        err = websocket.Message.Send(ws,msg);
		if err != nil {
			fmt.Println("can not send")
			break
		}
    }
}

func main(){
    http.Handle("/websocket",websocket.Handler(Echo))
    http.HandleFunc("/web",web)
    err := http.ListenAndServe("0.0.0.0:8888",nil)
    if err != nil {
		log.Fatal("listenandserve:",err)
    }
}

<!doctype html>
<html>
    <head>
	<title>go的websocket使用</title>
    </head>
    <body>
	<script>
		var sock = null;
		var sockUrl = "ws://192.168.186.129:8888/websocket";
		window.onload = function() {
			console.log("onload")
			sock = new WebSocket(sockUrl)
			sock.onopen = function(){
				console.log("connect to" + sockUrl)
			}
			sock.onclose = function(e){
				console.log("connect closed")
			}
			sock.onmessage = function(e) {
				console.log("message receied" + e.data)
                alert("message receied:" + e.data)
			}
		}
		function send(){
			var msg = document.getElementById('message').value;
			sock.send(msg)
		}
	</script>
	<input type="text" id ="message" value="test websocket"/>
	<button onclick="send()">发送</button>
    </body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值