Go語言實現websocket功能

字號+ 編輯: IT男在阿里 修訂: 种花家 來源: 利志分享 2023-09-11 我要說兩句(0)

以代碼形式講解Go語言實現WebSocket

Go語言後耑

package main

import (  
    "fmt"   
    "golang.org/x/net/websocket" //go get golang.org/x/net/websocket 下載websocket包  
    "html/template"              //支持模板html  
    "log"  
    "net/http"  
)

func Echo(ws *websocket.Conn) {  
    var err error  
    for {  
        var reply string  
        //websocket接受信息  
        if err = websocket.Message.Receive(ws, &reply); err != nil {  
            fmt.Println("can't receive")  
            break  
        }

        fmt.Println("reveived back from client: " + reply)

        msg := "received:" + reply

        fmt.Println("send to client:" + msg)

        //這裡是發送消息
        if err = websocket.Message.Send(ws, msg); err != nil {
            fmt.Println("can't send")
            break
        }

    }
}

func web(w http.ResponseWriter, r *http.Request) {  
    //列印請求的方法  
    fmt.Println("method", r.Method)  
    if r.Method == "GET" { //如果請求方法爲get顯示login.html,並相應給前耑  
        t, _ := template.ParseFiles("websocket.html")  
        t.Execute(w, nil)  
    } else {  
        //否則走列印輸出post接受的參數username和password  
        fmt.Println(r.PostFormValue("username"))  
        fmt.Println(r.PostFormValue("password"))  
    }  
}

func main() {
    //接受websocket的路由地址
    http.Handle("/websocket", websocket.Handler(Echo))
    //打開html頁面
    http.HandleFunc("/web", web)

    if err := http.ListenAndServe(":1234", nil); err != nil {
        log.Fatal("ListenAndServe:", err)
    }
}

html部分

< !DOCTYPE html>
 < html>< head>
    < meta charset="utf-8"/>
    < title>go測試socket< /title>< /head>< body>
    < script type="text/javascript">
        var sock = null;
        var wsuri = "ws://127.0.0.1:1234/websocket";

        window.onload = function() {

            console.log("onload");

            sock = new WebSocket(wsuri);

            sock.onopen = function() {
                console.log("connected to " + wsuri);
            }

            sock.onclose = function(e) {
                console.log("connection closed (" + e.code + ")");
            }

            sock.onmessage = function(e) {
                console.log("message received: " + e.data);
            }
        };

        function send() {
            var msg = document.getElementById('message').value;
            sock.send(msg);
        };
        WebSocket Echo Test    < form>
                    Message: < input id="message" type="text" value="Hello, world!">
            < /form>
    Send Message< /body>< /html>
閲完此文,您的感想如何?
  • 有用

    3

  • 沒用

    1

  • 開心

    1

  • 憤怒

    1

  • 可憐

    1

1.如文章侵犯了您的版權,請發郵件通知本站,該文章將在24小時内刪除;
2.本站標注原創的文章,轉發時煩請注明來源;
3.交流群: 2702237 13835667

相關課文
  • GO語言GORM如何更新字段

  • gorm如何創建記錄與模型定義需要注意什麽

  • gorm一般查詢與高級查詢

  • GORM時間戳跟蹤及CURD(增刪改查)

我要說說
網上賓友點評