解决并发情况下,TraceID可能互相覆盖问题
This commit is contained in:
parent
0ddab40835
commit
47e35b35bd
@ -160,7 +160,7 @@ func initServer(wsInstance abstract.IWebsocket) {
|
||||
// TODO : 增加指令回调失败的callback
|
||||
ctxInterface, _ := session.Get("ws_context")
|
||||
ctx := ctxInterface.(*context.WSContext)
|
||||
_ = dispatchCommand(ctx, bytes)
|
||||
_ = dispatchCommand(context.CloneContext(ctx), bytes)
|
||||
})
|
||||
// 3, 关闭连接的处理函数
|
||||
wsServerTable[wsInstance.GetServerPort()][wsInstance.GetModuleFlag()].wsServer.HandleClose(func(session *melody.Session, i int, s string) error {
|
||||
|
@ -27,7 +27,8 @@ import (
|
||||
//
|
||||
// Date : 7:03 下午 2021/3/27
|
||||
type WSContext struct {
|
||||
ConnectionID string // 请求ID
|
||||
ConnectionID string // 请求ID / 连接ID, 一个生命周期内, 此值不会发生变化
|
||||
TraceID string // 请求ID,每次指令执行都会发生变化,是针对一次请求有效的
|
||||
Flag string // 长连接模块
|
||||
GinCtx *gin.Context // 基于gin实现websocket, gin的上下文
|
||||
Session *melody.Session // 长连接的会话
|
||||
@ -46,6 +47,7 @@ func NewContext(ginCtx *gin.Context, flag string, session *melody.Session) *WSCo
|
||||
l, _ := easylock.NewSegment(128)
|
||||
return &WSContext{
|
||||
ConnectionID: generateConnectionID(flag),
|
||||
TraceID: generateConnectionID(flag),
|
||||
Flag: flag,
|
||||
GinCtx: ginCtx,
|
||||
Session: session,
|
||||
@ -55,6 +57,27 @@ func NewContext(ginCtx *gin.Context, flag string, session *melody.Session) *WSCo
|
||||
}
|
||||
}
|
||||
|
||||
//CloneContext 克隆上下文信息
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
//
|
||||
// Date : 8:07 下午 2021/4/18
|
||||
func CloneContext(ctx *WSContext) *WSContext {
|
||||
if nil == ctx {
|
||||
return nil
|
||||
}
|
||||
return &WSContext{
|
||||
ConnectionID: ctx.ConnectionID,
|
||||
TraceID: generateConnectionID(ctx.Flag),
|
||||
Flag: ctx.Flag,
|
||||
GinCtx: ctx.GinCtx,
|
||||
Session: ctx.Session,
|
||||
Server: ctx.Server,
|
||||
Data: ctx.Data,
|
||||
Lock: ctx.Lock,
|
||||
}
|
||||
}
|
||||
|
||||
// generateConnectionID 生成connection_id
|
||||
//
|
||||
// Author : go_developer@163.com<张德满>
|
||||
|
Loading…
Reference in New Issue
Block a user