首页 > 解决方案 > 客户端无法开始与服务器握手并返回 nil(未找到“升级”令牌)

问题描述

我正在尝试从 Go 中的 Gorilla Websocket 包中实现 websocket。我的客户像这样开始打开连接:

**index.html**

      var websocket = new WebSocket('ws://localhost:8080/stats');

      websocket.onopen = function(event) {
        console.log("Cnnected");
      };

      websocket.onerror = function(error) {
        console.log(error);
      };
... some other websocket methods...

在我的服务器端,我只是尝试在连接标头中添加升级令牌,如下所示:

**websocket.go**

var upgrader = websocket.Upgrader{
    ReadBufferSize:  1024,
    WriteBufferSize: 1024,
    CheckOrigin:     func(r *http.Request) bool { return true },
}


func Upgrade(w http.ResponseWriter, r *http.Request) (*websocket.Conn, error) {


    // get websocket connection here
    ws, err := upgrader.Upgrade(w, r, nil)
    if err != nil {
        log.Println(err)
        return ws, err
    }
    // returns our new websocket connection
    return ws, nil
}

但是,它返回 nil 并且错误消息显示在屏幕上,如下所示:

错误请求 websocket:客户端未使用 websocket 协议:在“连接”标头中找不到“升级”令牌

加载资源失败:服务器响应状态为 400(错误请求)

我不确定为什么功能升级无法获得连接并返回 ws。

标签: gowebsocket

解决方案


推荐阅读