drlq92444 2018-10-24 08:30
浏览 357
已采纳

websocket设置协议和来源

i use this lib: https://github.com/gorilla/websocket how to set protocol and origin,

code :

func InitWSSClient(url1, protocol, origin string)  {
    u := url.URL{Scheme: "ws", Host: url1}

    fmt.Println(url1,u.String())
    d :=websocket.DefaultDialer


    //c, _, err := websocket.DefaultDialer.Dial(u.String(), nil)
    c, _, err :=d.Dial(u.String(),nil)
    var limit int64 =1024 * 1024 *32

    if err != nil {
        log.Fatal("dial:", err)
    }
    c.SetReadLimit(limit)

    go readWSMessage(c)
    go sendWSmessage(c)

}

func readWSMessage(ws *websocket.Conn) error {
    for {
        _,message,err := ws.ReadMessage()
        if err != nil {
            log15.Error("receiveWebsocket ", "error", err)
            panic("error")

        }
        assignmentWebsocket(string(message))
    }
}

func sendWSmessage(ws *websocket.Conn) error {
    for {

        select {
        case params := <-WebsocketParams:
            fmt.Println("ws send messages", params)
            err :=ws.WriteMessage(websocket.TextMessage,[]byte(params))
            if err != nil {
                log15.Error("receiveWebsocket ", "error", err)
                panic("error")

            }
        }

    }

}

x.net.websocket set these element like this :

websocket.Dial(url, protocol, origin)

how to achieve this function in gorilla/websocket/, ths you help. i try many solutions is not working. if you know any solutions,

found the solution:

d := websocket.DefaultDialer
d.Subprotocols = []string{protocol}
header :=http.Header{}
header.Set("origin",origin)
  • 写回答

1条回答 默认 最新

  • dtypj3308 2018-10-25 03:36
    关注

    i found the solution, you can set like this

    u := url.URL{Scheme: "ws", Host: url1}
    d := websocket.DefaultDialer
    d.Subprotocols = []string{protocol}
    header := http.Header{}
    header.Set("origin", origin)
    c, _, err := d.Dial(u.String(), header)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境