Ai
1 Star 0 Fork 0

庞飞/multiapp

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
msg.go 1.87 KB
一键复制 编辑 原始数据 按行查看 历史
庞飞 提交于 2023-10-03 10:28 +08:00 . 合并主框架
package websocket
import (
"encoding/json"
"github.com/golang/protobuf/proto"
"github.com/gorilla/websocket"
"gitee.com/pangxianfei/multiapp/kernel/zone"
)
type Msg struct {
msgType int
data *[]byte
err error
}
func (wm *Msg) SetJSON(data interface{}) {
wm.msgType = websocket.TextMessage
dataBytes, err := json.Marshal(data)
wm.data = &dataBytes
wm.err = err
}
func (wm *Msg) SetProtoBuf(data proto.Message) {
wm.msgType = websocket.BinaryMessage
dataBytes, err := proto.Marshal(data)
wm.data = &dataBytes
wm.err = err
}
func (wm *Msg) SetString(data string) {
dataBytes := []byte(data)
wm.msgType = websocket.TextMessage
wm.data = &dataBytes
wm.err = nil
}
func (wm *Msg) SendDone() {
wm.msgType = -1
wm.data = nil
wm.err = nil
}
func (wm *Msg) isDone() bool {
if wm.msgType == -1 {
return true
}
return false
}
func (wm *Msg) SetByte(msgType int, msg *[]byte) {
wm.msgType = msgType
wm.data = msg
wm.err = nil
}
func (wm *Msg) Type() int {
return wm.msgType
}
func (wm *Msg) Error() error {
return wm.err
}
func (wm *Msg) ProtoBuf(dataPtr proto.Message) error {
return proto.Unmarshal(*wm.data, dataPtr)
}
func (wm *Msg) JSON(dataPtr interface{}) error {
return json.Unmarshal(*wm.data, dataPtr)
}
func (wm *Msg) String() string {
return string(*wm.data)
}
func (wm *Msg) Byte() *[]byte {
return wm.data
}
func (wm *Msg) send(ws *websocket.Conn, wsHandler Handler) error {
if err := ws.SetWriteDeadline(zone.Now().Add(wsHandler.WriteTimeout())); err != nil {
return err
}
return ws.WriteMessage(wm.msgType, *wm.data)
}
func (wm *Msg) scan(ws *websocket.Conn, wsHandler Handler) error {
if err := ws.SetReadDeadline(zone.Now().Add(wsHandler.ReadTimeout())); err != nil {
return err
}
msgType, msg, err := ws.ReadMessage()
if err != nil {
//return log.Error(err)
return err
}
wm.msgType = msgType
wm.data = &msg
wm.err = err
return nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/pangxianfei/multiapp.git
git@gitee.com:pangxianfei/multiapp.git
pangxianfei
multiapp
multiapp
v1.2.3

搜索帮助