
请路过的大手子帮忙看看
type WsReaderWriter struct { *websocket.Conn Rb []byte } func (ws_rw *WsReaderWriter) Read(p []byte) (n int, err error) { // 方法 1 是我最初想到的, 测试之后会卡住 // _, reader, err := ws_rw.NextReader() // if err != nil { // return 0, err // } // n, err = reader.Read(p) // log.Print("[read]:", n) // return n, err //方法 2 参考 gost 和其他几个网上例子用一个[]byte 中转的, 这种方法可以通过测试, 代码是跑起来了, 但是没想明白 方法 1 为什么不行, 或者其他人都没这么用 if len(ws_rw.Rb) == 0 { _, ws_rw.Rb, err = ws_rw.ReadMessage() } n = copy(p, ws_rw.Rb) ws_rw.Rb = ws_rw.Rb[n:] return }