package utils import ( "github.com/zjxpcyc/websocket" "github.com/zjxpcyc/wechat/wx" ) // ClientID 消息对象 type ClientID websocket.ClientID // Message 发送消息 type Message struct { From ClientID `json:"from"` To ClientID `json:"to"` Data interface{} `json:"data"` } // 消息类型 const ( WsMessage = "websocket" WechatMessage = "wechat" SMSMessage = "sms" ) // SendWs 发送 websocket func SendWs(message Message) { msg := websocket.Message{ From: websocket.ClientID(message.From), To: websocket.ClientID(message.To), Data: message.Data, } websocket.Send(msg) } func SendWechat(message Message) { dt := message.Data.(map[string]interface{}) org := dt["orgid"].(string) tplID := dt["tplid"].(string) tplLink := dt["link"].(string) tplData := dt["data"].(map[string]string) var data map[string]wx.TplMessageData if tplData != nil { data = make(map[string]wx.TplMessageData) for k, v := range tplData { data[k] = wx.TplMessageData{Value: v} } } err := WxClientFor(org).SendTplMessage(message.To.ID, tplID, tplLink, data) if err != nil { LogError("推送微信消息失败: ", err) } } // SendMessage 发送消息 func SendMessage(message Message, msgType string) { switch msgType { case WsMessage: SendWs(message) case WechatMessage: case SMSMessage: default: } } func MessageInit() { go websocket.Run() }