为了账号安全,请及时绑定邮箱和手机立即绑定

Golang socket io无法建立websocket连接

Golang socket io无法建立websocket连接

Go
繁华开满天机 2022-12-19 21:20:21
这是我的 socket io Go 服务器,基本上遵循包的示例代码:func main() {    server := socketio.NewServer(nil)    server.OnConnect("/", func(s socketio.Conn) error {        s.SetContext("")        fmt.Println("connected:", s.ID())               return nil    })    server.OnEvent("/", "notice", func(s socketio.Conn, msg string) {        fmt.Println("notice:", msg)        s.Emit("reply", "have "+msg)    })    server.OnEvent("/chat", "msg", func(s socketio.Conn, msg string) string {        s.SetContext(msg)        return "recv " + msg    })    server.OnEvent("/", "bye", func(s socketio.Conn) string {        last := s.Context().(string)        s.Emit("bye", last)        s.Close()        return last    })    server.OnError("/", func(s socketio.Conn, e error) {        fmt.Println("meet error:", e)    })    server.OnDisconnect("/", func(s socketio.Conn, reason string) {        fmt.Println("closed", reason)    })    go server.Serve()    defer server.Close()    mux := http.NewServeMux()        mux.Handle("/socket.io/", server) // socket io        log.Println("Serving at localhost:8000...")    log.Fatal(http.ListenAndServe(":8000", cors.Default().Handler(mux)))}这是我的客户端代码:<script src="https://cdn.socket.io/4.5.0/socket.io.min.js"  integrity="sha384-7EyYLQZgWBi67fBtVxw60/OWl1kjsfrPFcaU0pp0nAh+i8FD068QogUvg85Ewy1k" crossorigin="anonymous"></script><script>  const socket = io("http://localhost:8000");  socket.emit("msg", "abc")</script>我的客户端一直在发送长轮询 GET 请求,无法建立 websocket 连接。我怀疑这可能与我的服务器响应有关?从浏览器开发工具来看,我的响应负载前面似乎有一些随机字节:
查看完整描述

1 回答

?
猛跑小猪

TA贡献1858条经验 获得超8个赞

您正在使用客户端的 4.5.0 版以及(我假设 -请使用最少的可重现示例github.com/googollee/go-socket.io。go包自述文件指出:

目前这个库支持 1.4 版本的 Socket.IO 客户端。它现在支持房间、命名空间和广播。

套接字 io 文档提供了一个兼容性图表,显示服务器的 v1仅客户端的版本 1 支持。所以以下似乎有效(游乐场- 注意我也做了细微的改变所以输出消息):

<script src="https://cdn.socket.io/socket.io-1.7.4.min.js"></script>

<script>

  const socket = io("http://localhost:8000");

  socket.emit("msg", "abc");

</script>

要使用更高版本的 Socket.IO,您需要一个支持更高版本协议的服务器。gosf似乎支持 v2,但我还没有尝试过。


查看完整回答
反对 回复 2022-12-19
  • 1 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信