1 Star 0 Fork 1

flyiot/flylibs

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
FlyWSClient.go 2.61 KB
一键复制 编辑 原始数据 按行查看 历史
flyrainning 提交于 2024-02-03 20:12 +08:00 . u
package FlyWebSockets
import (
"fmt"
"sync"
"time"
"github.com/gorilla/websocket"
)
type FlyWSClient struct {
lock sync.Mutex
Conn *websocket.Conn
StartAt time.Time
IsClose bool
// jsonWriteCh chan interface{}
// bytesWriteCh chan []byte
// textWriteCh chan []byte
}
func NewFlyWSClient(conn *websocket.Conn) *FlyWSClient {
item := FlyWSClient{
Conn: conn,
StartAt: time.Now(),
IsClose: false,
}
// item.Start()
return &item
}
// func (s *FlyWSClient) Start() {
// s.IsClose = false
// s.jsonWriteCh = make(chan interface{})
// s.bytesWriteCh = make(chan []byte)
// s.textWriteCh = make(chan []byte)
// go s.writeLoop()
// }
func (s *FlyWSClient) Close() {
s.Conn.Close()
s.IsClose = true
// close(s.jsonWriteCh)
// close(s.bytesWriteCh)
// close(s.textWriteCh)
}
// func (s *FlyWSClient) writeLoop() {
// defer func() {
// if err := recover(); err != nil {
// fmt.Println(err)
// }
// }()
// for {
// select {
// case msg := <-s.jsonWriteCh:
// if err := s.Conn.WriteJSON(msg); err != nil {
// fmt.Println("Error writing JSON:", err)
// }
// case msg := <-s.bytesWriteCh:
// if err := s.Conn.WriteMessage(websocket.BinaryMessage, msg); err != nil {
// fmt.Println("Error writing bytes:", err)
// }
// case msg := <-s.textWriteCh:
// if err := s.Conn.WriteMessage(websocket.TextMessage, msg); err != nil {
// fmt.Println("Error writing bytes:", err)
// }
// }
// }
// }
func (s *FlyWSClient) ReadJSON(v interface{}) error {
s.lock.Lock()
defer s.lock.Unlock()
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
return s.Conn.ReadJSON(v)
}
func (s *FlyWSClient) WriteJSON(v interface{}) error {
s.lock.Lock()
defer s.lock.Unlock()
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
return s.Conn.WriteJSON(v)
}
func (s *FlyWSClient) WriteMessage(data []byte) error {
s.lock.Lock()
defer s.lock.Unlock()
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
return s.Conn.WriteMessage(websocket.TextMessage, data)
}
func (s *FlyWSClient) SendJSON(data WS_Resp) error {
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
return s.Conn.WriteJSON(data)
}
func (s *FlyWSClient) SendText(text string) error {
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
return s.Conn.WriteMessage(websocket.TextMessage, []byte(text))
}
func (s *FlyWSClient) SendBytes(data []byte) error {
defer func() {
if err := recover(); err != nil {
fmt.Println(err)
}
}()
return s.Conn.WriteMessage(websocket.BinaryMessage, data)
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/flyiot/flylibs.git
git@gitee.com:flyiot/flylibs.git
flyiot
flylibs
flylibs
b9c81f1c9857

搜索帮助