feat: ws模块消息码变更及修复断链情况
This commit is contained in:
@@ -10,6 +10,7 @@ import (
|
||||
"be.ems/src/framework/utils/generate"
|
||||
"be.ems/src/framework/vo/result"
|
||||
"be.ems/src/modules/ws/model"
|
||||
|
||||
"github.com/gorilla/websocket"
|
||||
)
|
||||
|
||||
@@ -30,7 +31,7 @@ func (s *WS) UpgraderWs(w http.ResponseWriter, r *http.Request) *websocket.Conn
|
||||
wsUpgrader := websocket.Upgrader{
|
||||
Subprotocols: []string{"omc-ws"},
|
||||
// 设置消息发送缓冲区大小(byte),如果这个值设置得太小,可能会导致服务端在发送大型消息时遇到问题
|
||||
WriteBufferSize: 1024,
|
||||
WriteBufferSize: 4096,
|
||||
// 消息包启用压缩
|
||||
EnableCompression: true,
|
||||
// ws握手超时时间
|
||||
@@ -195,11 +196,18 @@ func (s *WS) ClientWriteListen(wsClient *model.WSClient) {
|
||||
wsClient.MsgChan <- msgByte
|
||||
// 消息发送监听
|
||||
for msg := range wsClient.MsgChan {
|
||||
// PONG句柄
|
||||
if string(msg) == "ws:pong" {
|
||||
wsClient.LastHeartbeat = time.Now().UnixMilli()
|
||||
wsClient.Conn.WriteMessage(websocket.PongMessage, []byte{})
|
||||
continue
|
||||
}
|
||||
// 关闭句柄
|
||||
if string(msg) == "ws:close" {
|
||||
wsClient.Conn.WriteMessage(websocket.CloseMessage, []byte{})
|
||||
return
|
||||
}
|
||||
|
||||
// 发送消息
|
||||
err := wsClient.Conn.WriteMessage(websocket.TextMessage, msg)
|
||||
if err != nil {
|
||||
@@ -207,6 +215,5 @@ func (s *WS) ClientWriteListen(wsClient *model.WSClient) {
|
||||
s.ClientClose(wsClient.ID)
|
||||
return
|
||||
}
|
||||
wsClient.LastHeartbeat = time.Now().UnixMilli()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"be.ems/src/framework/database/redis"
|
||||
"be.ems/src/framework/logger"
|
||||
"be.ems/src/framework/redis"
|
||||
"be.ems/src/framework/telnet"
|
||||
"be.ems/src/framework/utils/ssh"
|
||||
"be.ems/src/framework/vo/result"
|
||||
@@ -51,6 +51,14 @@ func (s *WSReceive) Commont(client *model.WSClient, reqMsg model.WSRequest) {
|
||||
case "close":
|
||||
s.close(client)
|
||||
return
|
||||
case "ping", "PING":
|
||||
resByte, _ := json.Marshal(result.Ok(map[string]any{
|
||||
"requestId": reqMsg.RequestID,
|
||||
"data": "PONG",
|
||||
}))
|
||||
client.MsgChan <- resByte
|
||||
client.MsgChan <- []byte("ws:pong")
|
||||
return
|
||||
case "ps":
|
||||
resByte, err = processor.GetProcessData(reqMsg.RequestID, reqMsg.Data)
|
||||
case "net":
|
||||
|
||||
@@ -13,27 +13,31 @@ const (
|
||||
// 组号-其他
|
||||
GROUP_OTHER = "0"
|
||||
// 组号-跟踪任务网元数据变更 2_traceId
|
||||
GROUP_TRACE_NE = "2_"
|
||||
GROUP_TRACE_NE = "2"
|
||||
// 组号-信令跟踪Packet 4_taskNo
|
||||
GROUP_TRACE_PACKET = "4_"
|
||||
GROUP_TRACE_PACKET = "4"
|
||||
// 组号-指标通用 10_neType_neId
|
||||
GROUP_KPI = "10_"
|
||||
GROUP_KPI = "10"
|
||||
// 组号-指标UPF 12_neId
|
||||
GROUP_KPI_UPF = "12_"
|
||||
// 组号-自定义KPI指标 20_neType_neId
|
||||
GROUP_KPI_C = "20_"
|
||||
GROUP_KPI_C = "20"
|
||||
// 组号-IMS_CDR会话事件 1005_neId
|
||||
GROUP_IMS_CDR = "1005_"
|
||||
GROUP_IMS_CDR = "1005"
|
||||
// 组号-SMF_CDR会话事件 1006_neId
|
||||
GROUP_SMF_CDR = "1006_"
|
||||
GROUP_SMF_CDR = "1006"
|
||||
// 组号-SMSC_CDR会话事件 1007_neId
|
||||
GROUP_SMSC_CDR = "1007_"
|
||||
GROUP_SMSC_CDR = "1007"
|
||||
// 组号-SGWC_CDR会话事件 1008_neId
|
||||
GROUP_SGWC_CDR = "1008_"
|
||||
GROUP_SGWC_CDR = "1008"
|
||||
// 组号-AMF_UE会话事件 1010_neId
|
||||
GROUP_AMF_UE = "1010"
|
||||
// 组号-MME_UE会话事件 1011_neId
|
||||
GROUP_MME_UE = "1011"
|
||||
// 组号-告警 2000_neType_neId
|
||||
GROUP_ALARM = "2000"
|
||||
// 组号-告警事件 2000_neType_neId
|
||||
GROUP_ALARM_EVENT = "2002"
|
||||
)
|
||||
|
||||
// 实例化服务层 WSSend 结构体
|
||||
|
||||
Reference in New Issue
Block a user