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