如何解决无法构建“WebSocket”:URL“{{.}}”无效 gorilla/websocket 示例问题修复403又一个错误
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”上执行“发送”:仍处于连接状态。
解决方法
错误:
未捕获(承诺)DOMException:无法在“WebSocket”上执行“发送”:仍处于连接状态。
通过 WebSocket 发送数据,通过其 .onopen
回调得到解决:
var positions = ...
var ws;
ws = new WebSocket("ws://127.0.0.1:8080/echo");
ws.onopen = function(evt) {
console.log("OPEN SOCKET");
console.log("SEND: START");
ws.send(positions);
ws.close();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。