我正在尝试使用 gorilla websocket 库来了解 websockets 如何与 Go 一起工作。但是当我点击浏览器上的刷新按钮时,我不断收到此错误消息。当我重新加载用于测试 websocket 的网页时,我在 Go 控制台上收到以下错误消息:2015/09/18 19:04:41 websocket: close 10012015/09/18 19:04:41 http: response.Write on hijacked connection第一个是“离开”的状态代码。我假设这是因为当我点击刷新时它会远离 websocket 连接,所以这对我来说很有意义。但是后来我收到一条我不明白的错误消息。被劫持者。为什么我会得到它,它是什么意思?我在 Windows 机器上的 localhost:8080 上运行我的代码。我正在使用的代码:func wsHandler(w http.ResponseWriter, r *http.Request, _ httprouter.Params) error { conn, err := websocket.Upgrade(w, r, nil, 1024, 1024) if err != nil { return err } defer conn.Close() for { _, msg, err := conn.ReadMessage() if err != nil { return err } log.Println(string(msg)) } return nil}客户端:var conn = new WebSocket("ws://localhost:8080/api/messages/websocket");conn.onclose = function (e) { console.log("onclose fired");};conn.onopen = function (e) { console.log("onopen fired");};conn.onmessage = function (e) { console.log(e.data);}; setTimeout(function () { conn.send("foo!");}, 1500);当我第一次加载页面时,只foo!输出到控制台。总而言之,在加载页面一次,然后重新加载两次后,我得到如下输出:2015/09/18 19:04:39 foo!2015/09/18 19:04:41 websocket: close 10012015/09/18 19:04:41 http: response.Write on hijacked connection2015/09/18 19:04:43 foo!2015/09/18 19:04:44 websocket: close 10012015/09/18 19:04:44 http: response.Write on hijacked connection2015/09/18 19:04:46 foo!这是什么意思?我是不是做错了什么?
1 回答
蓝山帝景
TA贡献1843条经验 获得超7个赞
所述websocket.Upgrade函数劫持从http.ResponseWriter所述底层网络连接。
在从 writer 劫持连接后调用 write 时,ResponseWriter.Write方法会记录此消息。
在 websocket 处理程序返回后,应用程序使用的路由器或中间件似乎正在写入连接。
- 1 回答
- 0 关注
- 748 浏览
添加回答
举报
0/150
提交
取消