feat: gob json encoder

pull/2856/head
withchao 10 months ago
parent c078730a89
commit 18fbe03974

@ -84,7 +84,7 @@ type Client struct {
} }
// ResetClient updates the client's state with new connection and context information. // ResetClient updates the client's state with new connection and context information.
func (c *Client) ResetClient(ctx *UserConnContext, conn LongConn, longConnServer LongConnServer, sdkType string) { func (c *Client) ResetClient(ctx *UserConnContext, conn LongConn, longConnServer LongConnServer) {
c.w = new(sync.Mutex) c.w = new(sync.Mutex)
c.conn = conn c.conn = conn
c.PlatformID = stringutil.StringToInt(ctx.GetPlatformID()) c.PlatformID = stringutil.StringToInt(ctx.GetPlatformID())
@ -97,15 +97,12 @@ func (c *Client) ResetClient(ctx *UserConnContext, conn LongConn, longConnServer
c.closed.Store(false) c.closed.Store(false)
c.closedErr = nil c.closedErr = nil
c.token = ctx.GetToken() c.token = ctx.GetToken()
c.SDKType = sdkType c.SDKType = ctx.GetSDKType()
c.hbCtx, c.hbCancel = context.WithCancel(c.ctx) c.hbCtx, c.hbCancel = context.WithCancel(c.ctx)
c.subLock = new(sync.Mutex) c.subLock = new(sync.Mutex)
if c.subUserIDs != nil { if c.subUserIDs != nil {
clear(c.subUserIDs) clear(c.subUserIDs)
} }
if c.SDKType == "" {
c.SDKType = GoSDK
}
if c.SDKType == GoSDK { if c.SDKType == GoSDK {
c.Encoder = NewGobEncoder() c.Encoder = NewGobEncoder()
} else { } else {

@ -153,6 +153,14 @@ func (c *UserConnContext) GetCompression() bool {
return false return false
} }
func (c *UserConnContext) GetSDKType() string {
sdkType := c.Req.URL.Query().Get(SDKType)
if sdkType == "" {
sdkType = GoSDK
}
return sdkType
}
func (c *UserConnContext) ShouldSendResp() bool { func (c *UserConnContext) ShouldSendResp() bool {
errResp, exists := c.Query(SendResponse) errResp, exists := c.Query(SendResponse)
if exists { if exists {

@ -455,8 +455,7 @@ func (ws *WsServer) wsHandler(w http.ResponseWriter, r *http.Request) {
// Retrieve a client object from the client pool, reset its state, and associate it with the current WebSocket long connection // Retrieve a client object from the client pool, reset its state, and associate it with the current WebSocket long connection
client := ws.clientPool.Get().(*Client) client := ws.clientPool.Get().(*Client)
sdkType, _ := connContext.Query(SDKType) client.ResetClient(connContext, wsLongConn, ws)
client.ResetClient(connContext, wsLongConn, ws, sdkType)
// Register the client with the server and start message processing // Register the client with the server and start message processing
ws.registerChan <- client ws.registerChan <- client

Loading…
Cancel
Save