From 28b4cfe4716f117ceec51e27e6bff233d4cbfed5 Mon Sep 17 00:00:00 2001 From: Kevin <77494658+Kevin-Ben@users.noreply.github.com> Date: Wed, 1 Nov 2023 10:29:09 +0800 Subject: [PATCH] * bug fix --- http/controllers/send_to_client_controller.go | 29 +++++++++++++------ http/controllers/send_to_group_controller.go | 14 +++++++-- http/controllers/send_to_system_controller.go | 14 +++++++-- servers/server.go | 8 ++--- 4 files changed, 48 insertions(+), 17 deletions(-) diff --git a/http/controllers/send_to_client_controller.go b/http/controllers/send_to_client_controller.go index 7d8b54f..1c094ba 100644 --- a/http/controllers/send_to_client_controller.go +++ b/http/controllers/send_to_client_controller.go @@ -1,17 +1,18 @@ package controllers import ( + "encoding/json" "github.com/goravel/framework/contracts/http" "github.com/okami-chen/goravel-websocket/servers" ) type inputData struct { - ClientId string `json:"clientId"` - UserId string `json:"userId"` - SendUserId string `json:"sendUserId"` - Code int `json:"code"` - Msg string `json:"msg"` - Data string `json:"data"` + ClientId string `json:"clientId" form:"clientId"` + UserId string `json:"userId" form:"userId"` + SendUserId string `json:"sendUserId" form:"sendUserId"` + Code int `json:"code" form:"code"` + Msg string `json:"msg" form:"msg"` + Data string `json:"data" form:"data"` } func (r *WebsocketController) SendToClient(ctx http.Context) http.Response { @@ -46,7 +47,17 @@ func (r *WebsocketController) SendToClient(ctx http.Context) http.Response { data.ClientId = ctx.Request().Input("clientId") data.Code = ctx.Request().InputInt("code") data.Msg = ctx.Request().Input("msg") - data.Data = ctx.Request().Input("data") + + str := ctx.Request().InputMap("data") + bt, e := json.Marshal(str) + if e != nil { + return ctx.Response().Success().Json(http.Json{ + "code": 500, + "msg": e.Error(), + "data": []string{}, + }) + } + msg := string(bt) if data.UserId != "" { clients, e := servers.Manager.GetByUserId(data.UserId) @@ -60,7 +71,7 @@ func (r *WebsocketController) SendToClient(ctx http.Context) http.Response { var messageId []string for _, client := range clients { - id := servers.SendMessage2Client(client.ClientId, data.SendUserId, data.Code, data.Msg, &data.Data) + id := servers.SendMessage2Client(client.ClientId, data.SendUserId, data.Code, data.Msg, &msg) messageId = append(messageId, id) } return ctx.Response().Success().Json(http.Json{ @@ -72,7 +83,7 @@ func (r *WebsocketController) SendToClient(ctx http.Context) http.Response { }) } - id := servers.SendMessage2Client(data.ClientId, data.SendUserId, data.Code, data.Msg, &data.Data) + id := servers.SendMessage2Client(data.ClientId, data.SendUserId, data.Code, data.Msg, &msg) return ctx.Response().Success().Json(http.Json{ "code": 0, diff --git a/http/controllers/send_to_group_controller.go b/http/controllers/send_to_group_controller.go index 9a9f0aa..1b48aa1 100644 --- a/http/controllers/send_to_group_controller.go +++ b/http/controllers/send_to_group_controller.go @@ -1,6 +1,7 @@ package controllers import ( + "encoding/json" "github.com/goravel/framework/contracts/http" "github.com/okami-chen/goravel-websocket/servers" ) @@ -37,9 +38,18 @@ func (r *WebsocketController) SendToGroup(ctx http.Context) http.Response { groupName := ctx.Request().Input("groupName") code := ctx.Request().InputInt("code") msg := ctx.Request().Input("msg") - data := ctx.Request().Input("data") + str := ctx.Request().InputMap("data") + bt, e := json.Marshal(str) + if e != nil { + return ctx.Response().Success().Json(http.Json{ + "code": 500, + "msg": e.Error(), + "data": []string{}, + }) + } + m := string(bt) - messageId := servers.SendMessage2Group(systemId, sendUserId, groupName, code, msg, &data) + messageId := servers.SendMessage2Group(systemId, sendUserId, groupName, code, msg, &m) return ctx.Response().Success().Json(http.Json{ "code": 0, diff --git a/http/controllers/send_to_system_controller.go b/http/controllers/send_to_system_controller.go index 4d538b9..b70111d 100644 --- a/http/controllers/send_to_system_controller.go +++ b/http/controllers/send_to_system_controller.go @@ -1,6 +1,7 @@ package controllers import ( + "encoding/json" "github.com/goravel/framework/contracts/http" "github.com/okami-chen/goravel-websocket/servers" ) @@ -35,9 +36,18 @@ func (r *WebsocketController) SendToSystem(ctx http.Context) http.Response { sendUserId := ctx.Request().Input("sendUserId") code := ctx.Request().InputInt("code") msg := ctx.Request().Input("msg") - data := ctx.Request().Input("data") - servers.SendMessage2System(systemId, sendUserId, code, msg, data) + str := ctx.Request().InputMap("data") + bt, e := json.Marshal(str) + if e != nil { + return ctx.Response().Success().Json(http.Json{ + "code": 500, + "msg": e.Error(), + "data": []string{}, + }) + } + m := string(bt) + servers.SendMessage2System(systemId, sendUserId, code, msg, m) return ctx.Response().Success().Json(http.Json{ "code": 0, diff --git a/servers/server.go b/servers/server.go index 5926557..9c26e27 100644 --- a/servers/server.go +++ b/servers/server.go @@ -134,7 +134,7 @@ func GetOnlineList(systemId *string, groupName *string) map[string]interface{} { // 通过本服务器发送信息 func SendMessage2LocalClient(messageId, clientId string, sendUserId string, code int, msg string, data *string) { - //facades.Log().Debug("发送到通道:" + clientId) + //facades.Log().Debug("发送到通道:" + clientId + ",msg -> " + *data) ToClientChan <- clientInfo{ClientId: clientId, MessageId: messageId, SendUserId: sendUserId, Code: code, Msg: msg, Data: data} return } @@ -162,7 +162,7 @@ func WriteMessage() { if conn, err := Manager.GetByClientId(clientInfo.ClientId); err == nil && conn != nil { if err := Render(conn.Socket, clientInfo.MessageId, clientInfo.SendUserId, clientInfo.Code, clientInfo.Msg, clientInfo.Data); err != nil { Manager.DisConnect <- conn - facades.Log().Error("终端设备离线:" + clientInfo.ClientId) + facades.Log().Error("终端设备离线:" + clientInfo.ClientId + ",msg: " + *clientInfo.Data) //设备失败事件 t := carbon.Now("PRC").ToDateTimeString() events.NewClientMessageFailEvent(conn.UserId, conn.ClientId, t, clientInfo.MessageId) @@ -170,7 +170,7 @@ func WriteMessage() { //设备离线 events.NewClientOffloneEvent(conn.UserId, conn.ClientId, t) } else { - facades.Log().Debugf("终端设备消息:%s, 消息编号:%s", clientInfo.ClientId, clientInfo.MessageId) + facades.Log().Debugf("终端设备消息:%s, 消息编号:%s, msg: %s", clientInfo.ClientId, clientInfo.MessageId, *clientInfo.Data) //设备成功事件 t := carbon.Now("PRC").ToDateTimeString() events.NewClientMessageSuccessEvent(conn.UserId, conn.ClientId, t, clientInfo.MessageId) @@ -192,7 +192,7 @@ func Render(conn *websocket.Conn, messageId string, sendUserId string, code int, // 启动定时器进行心跳检测 func PingTimer() { go func() { - interval := facades.Config().Get("websocket.interval", "10") + interval := facades.Config().Get("websocket.interval", "30") num, err := strconv.Atoi(interval.(string)) if err != nil { facades.Log().Errorf("类型转换失败: %s ", err.Error())