go websocket

2456 ワード

サポートを獲得しました。go get golang.org/x/net/websocket
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>