mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-05-04 09:09:02 +08:00
conn
This commit is contained in:
parent
86512f0dcb
commit
d78bf6d1e1
@ -9,7 +9,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
|
|
||||||
func callbackUserOnline(operationID, userID string, platformID int, token string) cbApi.CommonCallbackResp {
|
func callbackUserOnline(operationID, userID string, platformID int, token string, isAppBackgroundStatusChanged bool) cbApi.CommonCallbackResp {
|
||||||
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
|
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
|
||||||
if !config.Config.Callback.CallbackUserOnline.Enable {
|
if !config.Config.Callback.CallbackUserOnline.Enable {
|
||||||
return callbackResp
|
return callbackResp
|
||||||
@ -25,7 +25,8 @@ func callbackUserOnline(operationID, userID string, platformID int, token string
|
|||||||
},
|
},
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
},
|
},
|
||||||
Seq: int(time.Now().UnixNano() / 1e6),
|
Seq: int(time.Now().UnixNano() / 1e6),
|
||||||
|
IsAppBackgroundStatusChanged: isAppBackgroundStatusChanged,
|
||||||
}
|
}
|
||||||
callbackUserOnlineResp := &cbApi.CallbackUserOnlineResp{CommonCallbackResp: &callbackResp}
|
callbackUserOnlineResp := &cbApi.CallbackUserOnlineResp{CommonCallbackResp: &callbackResp}
|
||||||
if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOnlineCommand, callbackUserOnlineReq, callbackUserOnlineResp, config.Config.Callback.CallbackUserOnline.CallbackTimeOut); err != nil {
|
if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOnlineCommand, callbackUserOnlineReq, callbackUserOnlineResp, config.Config.Callback.CallbackUserOnline.CallbackTimeOut); err != nil {
|
||||||
@ -35,7 +36,7 @@ func callbackUserOnline(operationID, userID string, platformID int, token string
|
|||||||
return callbackResp
|
return callbackResp
|
||||||
}
|
}
|
||||||
|
|
||||||
func callbackUserOffline(operationID, userID string, platformID int) cbApi.CommonCallbackResp {
|
func callbackUserOffline(operationID, userID string, platformID int, isAppBackgroundStatusChanged bool) cbApi.CommonCallbackResp {
|
||||||
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
|
callbackResp := cbApi.CommonCallbackResp{OperationID: operationID}
|
||||||
if !config.Config.Callback.CallbackUserOffline.Enable {
|
if !config.Config.Callback.CallbackUserOffline.Enable {
|
||||||
return callbackResp
|
return callbackResp
|
||||||
@ -50,7 +51,8 @@ func callbackUserOffline(operationID, userID string, platformID int) cbApi.Commo
|
|||||||
},
|
},
|
||||||
UserID: userID,
|
UserID: userID,
|
||||||
},
|
},
|
||||||
Seq: int(time.Now().UnixNano() / 1e6),
|
Seq: int(time.Now().UnixNano() / 1e6),
|
||||||
|
IsAppBackgroundStatusChanged: isAppBackgroundStatusChanged,
|
||||||
}
|
}
|
||||||
callbackUserOfflineResp := &cbApi.CallbackUserOfflineResp{CommonCallbackResp: &callbackResp}
|
callbackUserOfflineResp := &cbApi.CallbackUserOfflineResp{CommonCallbackResp: &callbackResp}
|
||||||
if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOfflineCommand, callbackOfflineReq, callbackUserOfflineResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil {
|
if err := http.CallBackPostReturn(config.Config.Callback.CallbackUrl, constant.CallbackUserOfflineCommand, callbackOfflineReq, callbackUserOfflineResp, config.Config.Callback.CallbackUserOffline.CallbackTimeOut); err != nil {
|
||||||
|
@ -403,6 +403,17 @@ func (ws *WServer) setUserDeviceBackground(conn *UserConn, m *Req) {
|
|||||||
if isPass {
|
if isPass {
|
||||||
req := pData.(*sdk_ws.SetAppBackgroundStatusReq)
|
req := pData.(*sdk_ws.SetAppBackgroundStatusReq)
|
||||||
conn.IsBackground = req.IsBackground
|
conn.IsBackground = req.IsBackground
|
||||||
|
if req.IsBackground {
|
||||||
|
callbackResp := callbackUserOffline(m.OperationID, conn.userID, int(conn.platformID), true)
|
||||||
|
if callbackResp.ErrCode != 0 {
|
||||||
|
log.NewError(m.OperationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
callbackResp := callbackUserOnline(m.OperationID, conn.userID, int(conn.platformID), conn.token, true)
|
||||||
|
if callbackResp.ErrCode != 0 {
|
||||||
|
log.NewError(m.OperationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp)
|
||||||
|
}
|
||||||
|
}
|
||||||
log.NewInfo(m.OperationID, "SetUserDeviceBackground", "success", *conn, req.IsBackground)
|
log.NewInfo(m.OperationID, "SetUserDeviceBackground", "success", *conn, req.IsBackground)
|
||||||
}
|
}
|
||||||
ws.setUserDeviceBackgroundResp(conn, m, errCode, errMsg)
|
ws.setUserDeviceBackgroundResp(conn, m, errCode, errMsg)
|
||||||
|
@ -36,6 +36,7 @@ type UserConn struct {
|
|||||||
IsCompress bool
|
IsCompress bool
|
||||||
userID string
|
userID string
|
||||||
IsBackground bool
|
IsBackground bool
|
||||||
|
token string
|
||||||
}
|
}
|
||||||
|
|
||||||
type WServer struct {
|
type WServer struct {
|
||||||
@ -86,7 +87,7 @@ func (ws *WServer) wsHandler(w http.ResponseWriter, r *http.Request) {
|
|||||||
log.NewDebug(operationID, query["sendID"][0], "enable compression")
|
log.NewDebug(operationID, query["sendID"][0], "enable compression")
|
||||||
isCompress = true
|
isCompress = true
|
||||||
}
|
}
|
||||||
newConn := &UserConn{conn, new(sync.Mutex), utils.StringToInt32(query["platformID"][0]), 0, isCompress, query["sendID"][0], false}
|
newConn := &UserConn{conn, new(sync.Mutex), utils.StringToInt32(query["platformID"][0]), 0, isCompress, query["sendID"][0], false, query["token"][0]}
|
||||||
userCount++
|
userCount++
|
||||||
ws.addUserConn(query["sendID"][0], utils.StringToInt(query["platformID"][0]), newConn, query["token"][0], operationID)
|
ws.addUserConn(query["sendID"][0], utils.StringToInt(query["platformID"][0]), newConn, query["token"][0], operationID)
|
||||||
go ws.readMsg(newConn)
|
go ws.readMsg(newConn)
|
||||||
@ -327,7 +328,7 @@ func (ws *WServer) addUserConn(uid string, platformID int, conn *UserConn, token
|
|||||||
rwLock.Lock()
|
rwLock.Lock()
|
||||||
defer rwLock.Unlock()
|
defer rwLock.Unlock()
|
||||||
log.Info(operationID, utils.GetSelfFuncName(), " args: ", uid, platformID, conn, token, "ip: ", conn.RemoteAddr().String())
|
log.Info(operationID, utils.GetSelfFuncName(), " args: ", uid, platformID, conn, token, "ip: ", conn.RemoteAddr().String())
|
||||||
callbackResp := callbackUserOnline(operationID, uid, platformID, token)
|
callbackResp := callbackUserOnline(operationID, uid, platformID, token, false)
|
||||||
if callbackResp.ErrCode != 0 {
|
if callbackResp.ErrCode != 0 {
|
||||||
log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOnline resp:", callbackResp)
|
log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOnline resp:", callbackResp)
|
||||||
}
|
}
|
||||||
@ -390,7 +391,7 @@ func (ws *WServer) delUserConn(conn *UserConn) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(operationID, " close err", "", "uid", uid, "platform", platform)
|
log.Error(operationID, " close err", "", "uid", uid, "platform", platform)
|
||||||
}
|
}
|
||||||
callbackResp := callbackUserOffline(operationID, conn.userID, platform)
|
callbackResp := callbackUserOffline(operationID, conn.userID, platform, false)
|
||||||
if callbackResp.ErrCode != 0 {
|
if callbackResp.ErrCode != 0 {
|
||||||
log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp)
|
log.NewError(operationID, utils.GetSelfFuncName(), "callbackUserOffline failed", callbackResp)
|
||||||
}
|
}
|
||||||
|
@ -2,8 +2,9 @@ package call_back_struct
|
|||||||
|
|
||||||
type CallbackUserOnlineReq struct {
|
type CallbackUserOnlineReq struct {
|
||||||
UserStatusCallbackReq
|
UserStatusCallbackReq
|
||||||
Token string `json:"token"`
|
Token string `json:"token"`
|
||||||
Seq int `json:"seq"`
|
Seq int `json:"seq"`
|
||||||
|
IsAppBackgroundStatusChanged bool `json:"isAppBackgroundStatusChanged"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CallbackUserOnlineResp struct {
|
type CallbackUserOnlineResp struct {
|
||||||
@ -12,7 +13,8 @@ type CallbackUserOnlineResp struct {
|
|||||||
|
|
||||||
type CallbackUserOfflineReq struct {
|
type CallbackUserOfflineReq struct {
|
||||||
UserStatusCallbackReq
|
UserStatusCallbackReq
|
||||||
Seq int `json:"seq"`
|
Seq int `json:"seq"`
|
||||||
|
IsAppBackgroundStatusChanged bool `json:"isAppBackgroundStatusChanged"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CallbackUserOfflineResp struct {
|
type CallbackUserOfflineResp struct {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user