Ewa*_*Sou 13 https http go websocket gorilla
我正在使用 Gorilla Websocket 包来实现 websocket。
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
// handle error
fmt.Println(err)
}
defer conn.Close()
Run Code Online (Sandbox Code Playgroud)
我看到下面的错误
websocket:客户端未使用 websocket 协议:“连接”标头中未找到“升级”令牌
我打印在我的请求的标题上,我看到以下内容
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
// handle error
fmt.Println(err)
}
defer conn.Close()
Run Code Online (Sandbox Code Playgroud)
没有按预期升级 websocket 或连接升级
我相信我面临着与此完全相同的问题。
如果您在虚拟机中部署 WS 服务器并希望默认情况下存在此标头,请更新您的 Nginx 配置文件,如下所示:
location /ws/ {
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header Upgrade websocket;
proxy_set_header Connection Upgrade;
proxy_pass "http://127.0.0.1:8089";
}
Run Code Online (Sandbox Code Playgroud)
proxy_set_header 升级websocket;proxy_set_header 连接升级;即使客户端尚未传递标头,也会为您完成这项工作。
浏览器js请求ws连接方法错误,正确的ws请求代码var ws = new WebSocket("ws://localhost:4747/ws");。
一个正确的ws请求头,里面的每个头都是必须的,只是值不一样。
GET /chat HTTP/1.1
Host: example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
Sec-WebSocket-Protocol: chat, superchat
Sec-WebSocket-Version: 13
Origin: http://example.com
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21291 次 |
| 最近记录: |