1 Star 0 Fork 0

kingwebasp / openpdd

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
reader.go 956 Bytes
一键复制 编辑 原始数据 按行查看 历史
kingwebasp 提交于 2023-11-14 17:11 . 初始化导入
package pmc
import (
"context"
"encoding/json"
"fmt"
"net"
"time"
"gitee.com/kingwebasp/openpdd/core"
"github.com/gobwas/ws"
"github.com/gobwas/ws/wsutil"
)
// Read read pmc message
func Read(ctx context.Context, clt *core.SDKClient) <-chan Command {
ch := make(chan Command)
go func() {
defer close(ch)
conn, err := reconnect(ctx, clt)
if err != nil {
return
}
for {
select {
case <-ctx.Done():
return
default:
if payload, err := wsutil.ReadServerText(conn); err != nil {
time.Sleep(1 * time.Second)
if conn, err = reconnect(ctx, clt); err != nil {
return
}
} else {
var cmd Command
if err := json.Unmarshal(payload, &cmd); err == nil {
ch <- cmd
}
}
}
}
}()
return ch
}
func reconnect(ctx context.Context, clt *core.SDKClient) (net.Conn, error) {
conn, _, _, err := ws.Dial(ctx, clt.WSSUrl())
if err != nil {
fmt.Println(err)
}
return conn, err
}
1
https://gitee.com/kingwebasp/openpdd.git
git@gitee.com:kingwebasp/openpdd.git
kingwebasp
openpdd
openpdd
v1.0.13

搜索帮助

53164aa7 5694891 3bd8fe86 5694891