【发布时间】:2021-10-01 14:14:20
【问题描述】:
gorilla/websocket例子
在这个例子中:
WebSocket 由以下人员创建:
ws = new WebSocket("{{.}}");
示例运行良好。
问题
但是,我想在另一个 JS 代码中使用相同的代码,例如:
var ws;
ws = new WebSocket("{{.}}");
ws.onopen = function(evt) {
console.log("OPEN SOCKET");
}
ws.onclose = function(evt) {
console.log("CLOSE SOCKET");
ws = null;
}
ws.onmessage = function(evt) {
console.log("RESPONSE SOCKET: RECEIVED");
}
ws.onerror = function(evt) {
console.log("ERROR: " + evt.data);
}
ws.send(positions);
ws.close();
我收到此错误:
未捕获(承诺中)DOMException:无法构造“WebSocket”:URL“{{.}}”无效。 在 AddObjectCommand.execute 处
我这样改变了 WebSocket:
ws = new WebSocket("ws://127.0.0.1:8080/echo");
但我仍然收到错误消息:
WebSocket 连接到“ws://127.0.0.1:8080/echo”失败:WebSocket 握手期间出错:意外响应代码:403
我无法弄清楚我做错了什么。我错过了什么?
修复403
403 错误已通过此建议得到解决:
https://github.com/gorilla/websocket/issues/367#issuecomment-375971418
通过添加:
upgrader.CheckOrigin = func(r *http.Request) bool { return true }
之前:
c, err := upgrader.Upgrade(w, r, nil)
当然,信任所有来源并不安全。只是临时修复。
又一个错误
但是又抛出了一个错误:
未捕获(承诺中)DOMException:无法在“WebSocket”上执行“发送”:仍处于 CONNECTING 状态。
【问题讨论】:
标签: javascript websocket gorilla