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