/
handler.go
54 lines (45 loc) · 999 Bytes
/
handler.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package websocket
import (
"errors"
"github.com/gin-gonic/gin"
)
type MessageInfo struct {
AppKey string
Auid uint
Message []byte
}
type ClientInfo struct {
AppKey string
Auid uint
}
type MessageHandler interface {
Message(*gin.Context, *MessageInfo)
}
var messageHandler MessageHandler
func SetMessagehandler(m MessageHandler) {
messageHandler = m
}
// 获取所有在线客户端
func GetClients() []*ClientInfo {
arr := make([]*ClientInfo, 0)
for _, v := range Manager.getAllClient() {
cinfo := &ClientInfo{
AppKey: v.AppKey,
Auid: v.Auid,
}
arr = append(arr, cinfo)
}
return arr
}
// 发送消息
func SendMessage(ctx *gin.Context, msg *MessageInfo) error {
client := Manager.getClient(msg.AppKey, msg.Auid)
if client == nil {
// gowk.Response().Fail(ctx, gowk.NewError(500, "目标不在线"), nil)
return errors.New("目标客户端不在线")
}
client.Ctx = ctx
client.Send <- msg.Message
// gowk.Response().Success(ctx, nil)
return nil
}