代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。