gpt4 book ai didi

go - gobwas/ws通过网络发送操作

转载 作者:行者123 更新时间:2023-12-01 20:26:44 24 4
gpt4 key购买 nike

有人可以帮我理解我在做什么错吗,我要做的就是在net.Conn实例(server)上写一个Ping消息,然后用net.Conn实例上期望的Pong回复。 client)。

我用一些收到的错误注释了代码。

reader.go
func read(conn net.Conn) {
for {
conn.SetReadDeadline(time.Now().Add(2 * time.Second))
_, op, err := wsutil.ReadClientData(conn)
if err != nil {
log.Printf("wsmanager read: %v", err) // read: write pipe: deadline exceeded
return
}
if op != ws.OpPing {
continue
}

c.conn.SetWriteDeadline(time.Now().Add(3 * time.Second))
if err = wsutil.WriteServerMessage(c.conn, ws.OpPong, []byte{}); err != nil {
log.Printf("wsmanager: send pong error: %v", err)
return
}
}
}

// reader_test.go

client, server := net.Pipe()
go read(server) // starts the loop above
err := wsutil.WriteClientMessage(server, ws.OpPing, []byte{})
if err != nil {
t.Fatalf("failed sending pings message %v", err)
}
_, op, err := wsutil.ReadServerData(client)
if err != nil {
t.Errorf("exp no err, got %v", err)
}
if op != ws.OpPong {
t.Errorf("exp ws.OpPong, got %v", op)
}

最佳答案

感谢您使用此库:)
如文档所述,ReadData函数从连接中读取数据。即应用程序专用数据,而不是控制消息。在这些函数中隐式处理控制帧。如果要阅读任何类型的消息,可以使用wsutil.Reader或普通的ws.Read函数。

https://godoc.org/github.com/gobwas/ws/wsutil#ReadClientData

关于go - gobwas/ws通过网络发送操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61168541/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com