iris 的 websocket 初始接觸

Limpid發表於2020-02-01

在檢視learnku的iris文件時,發現裡面提供的關於websocket的樣例無法正確執行,檢視其在GitHub上提供的樣例(https://github.com/kataras/iris/tree/maste...) (此處多說一句之所以選examples/websocket/下其他的測試包,基本都是需要配合前端寫單獨的js才能執行)在對其中一些程式碼執行時需要稍加需改,因為我們一般在初始試用是隻是在一個瀏覽器開啟websocket線上測試網站進行測試,這裡會涉及到跨域問題導致在連線客戶端時直接就是失敗的,下面附上針對此處修改程式碼

    mytmpu:=new(gorillawo.Upgrader)
    mytmpu.CheckOrigin= func(r *http.Request) bool {
        return true
    }
    MyUpgrader:=gorilla.Upgrader(*mytmpu)

    websocketServer := websocket.New(
        MyUpgrader, /* DefaultGobwasUpgrader can be used too. */
        websocket.Events{
        websocket.OnNativeMessage: func(nsConn *websocket.NSConn, msg websocket.Message) error {
            log.Printf("Server got: %s from [%s]", msg.Body, nsConn.Conn.ID())

            nsConn.Conn.Server().Broadcast(nsConn, msg)
            return nil
        },
    })

    websocketServer.OnConnect=func(c *websocket.Conn) error {
        fmt.Printf("[%s] Connected to server!\n", c.ID())
        return nil
    }

預設DefaultGobwasUpgrader 中沒有定義CheckOrigin方法進而啟用預設驗證跨域,這裡直接將跨域驗證返回ture就可以使用隨意的網頁客戶端測試了

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章