go websocket
2456 ワード
サポートを獲得しました。go get golang.org/x/net/websocket
以下はフロントシミュレーション192.168.149.1は自分のパソコンのIPです。自分のIPによって提出された住所が違っています。ここで自分のIPアドレスに変更したり、提出したいサーバのアドレスに変更すればいいです。
package main
import (
"log"
"net/http"
"os"
"golang.org/x/net/websocket"
)
func main() {
log.Println(os.Args[0]) // ,
http.Handle("/", websocket.Handler(Echo))
if err := http.ListenAndServe(":8088", nil); err != nil {
log.Println(err)
}
}
func Echo(ws *websocket.Conn) {
for {
var raply string
if err := websocket.Message.Receive(ws, &raply); err != nil { //get infomation,write in adress
log.Println("can't receive")
break
}
msg := "Received:" + raply
log.Println(msg)
if err := websocket.Message.Send(ws, "come back infomation"); err != nil { //send infomation
log.Println("can't send")
break
}
}
}
解釈:(1)http.Handle(「/」,websockett.Handler)のメイン関数であるhandle関数は、ルートと関連方法を関連付けるが、変換(2)Fnc Echo(ws*websocketc.cn)という関数で論理的な実行が実現され、forループはユーザー要求を処理している。対応するメモリアドレスを保存します。websocket.Message.Send(ws,「come back infomation」)は、該当するデータを送信し、フロントでこのデータを受信することができます。以下はフロントシミュレーション192.168.149.1は自分のパソコンのIPです。自分のIPによって提出された住所が違っています。ここで自分のIPアドレスに変更したり、提出したいサーバのアドレスに変更すればいいです。
<script>
var sock=null
var wxurl="ws://192.168.149.1:8088"
window.onload=function(){
sock= new WebSocket(wxurl)
sock.onopen = function(){
console.log("connect to "+wxurl)
}
sock.onmessage = function(e){
console.log("message:"+e.data)
alert(e.data)
$("#cs").text(e.data)
}
sock.onclose = function(e){
console.log("close:"+e.code)
}
}
function send(){
var msg = document.getElementById("ms").value
sock.send(msg)
}
</script>
<form>
<input id="ms" type="text" value="hello word"/>
<label id="cs"/>
</form>
<button onclick="send()">push</button>
</code></pre>
</article>
</div>
</div>