fix
This commit is contained in:
parent
b0e534de8c
commit
84749f4d14
|
@ -8,6 +8,12 @@ const (
|
||||||
WEBSOCKET_UNAUTH = "WEBSOCKET_UNAUTH"
|
WEBSOCKET_UNAUTH = "WEBSOCKET_UNAUTH"
|
||||||
//ws连接成功
|
//ws连接成功
|
||||||
WEBSOCKET_CONNECT_SUCCESS = "WEBSOCKET_CONNECT_SUCCESS"
|
WEBSOCKET_CONNECT_SUCCESS = "WEBSOCKET_CONNECT_SUCCESS"
|
||||||
|
//请求恢复为上次连接的标识
|
||||||
|
WEBSOCKET_REQUEST_RESUME_LAST_CONNECT = "WEBSOCKET_REQUEST_RESUME_LAST_CONNECT"
|
||||||
|
//请求恢复为上次连接的标识错误
|
||||||
|
WEBSOCKET_REQUEST_RESUME_LAST_CONNECT_ERR = "WEBSOCKET_REQUEST_RESUME_LAST_CONNECT_ERR"
|
||||||
|
//请求恢复为上次连接的标识成功
|
||||||
|
WEBSOCKET_REQUEST_RESUME_LAST_CONNECT_SUCCESS = "WEBSOCKET_REQUEST_RESUME_LAST_CONNECT_SUCCESS"
|
||||||
//渲染前数据组装
|
//渲染前数据组装
|
||||||
WEBSOCKET_RENDER_IMAGE_ASSEMBLE = "WEBSOCKET_RENDER_IMAGE_ASSEMBLE"
|
WEBSOCKET_RENDER_IMAGE_ASSEMBLE = "WEBSOCKET_RENDER_IMAGE_ASSEMBLE"
|
||||||
//图片渲染
|
//图片渲染
|
||||||
|
|
|
@ -112,6 +112,7 @@ func (l *DataTransferLogic) DataTransfer(svcCtx *svc.ServiceContext, w http.Resp
|
||||||
//测试的目前写死 39
|
//测试的目前写死 39
|
||||||
var userInfo auth.UserInfo
|
var userInfo auth.UserInfo
|
||||||
userInfo.UserId = 39
|
userInfo.UserId = 39
|
||||||
|
//设置连接
|
||||||
ws := l.setConnPool(conn, userInfo)
|
ws := l.setConnPool(conn, userInfo)
|
||||||
defer ws.close()
|
defer ws.close()
|
||||||
//循环读客户端信息
|
//循环读客户端信息
|
||||||
|
@ -126,7 +127,7 @@ func (l *DataTransferLogic) DataTransfer(svcCtx *svc.ServiceContext, w http.Resp
|
||||||
ws.heartbeat()
|
ws.heartbeat()
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取唯一id
|
// 设置连接
|
||||||
func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo auth.UserInfo) wsConnectItem {
|
func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo auth.UserInfo) wsConnectItem {
|
||||||
publicMutex.Lock()
|
publicMutex.Lock()
|
||||||
defer publicMutex.Unlock()
|
defer publicMutex.Unlock()
|
||||||
|
@ -158,6 +159,8 @@ func (l *DataTransferLogic) setConnPool(conn *websocket.Conn, userInfo auth.User
|
||||||
}()
|
}()
|
||||||
return ws
|
return ws
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 获取唯一id
|
||||||
func (l *DataTransferLogic) getUniqueId() string {
|
func (l *DataTransferLogic) getUniqueId() string {
|
||||||
uniqueId := uuid.New().String() + time.Now().Format("20060102150405")
|
uniqueId := uuid.New().String() + time.Now().Format("20060102150405")
|
||||||
if _, ok := mapConnPool.Load(uniqueId); ok {
|
if _, ok := mapConnPool.Load(uniqueId); ok {
|
||||||
|
@ -309,6 +312,9 @@ func (w *wsConnectItem) dealwithReciveData(data []byte) {
|
||||||
//图片渲染
|
//图片渲染
|
||||||
case constants.WEBSOCKET_RENDER_IMAGE:
|
case constants.WEBSOCKET_RENDER_IMAGE:
|
||||||
w.renderImage(d)
|
w.renderImage(d)
|
||||||
|
//刷新重连请求恢复上次连接的标识
|
||||||
|
case constants.WEBSOCKET_REQUEST_RESUME_LAST_CONNECT:
|
||||||
|
w.resumeLateConnect(d)
|
||||||
default:
|
default:
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
27
server/websocket/internal/logic/ws_resume_last_connect.go
Normal file
27
server/websocket/internal/logic/ws_resume_last_connect.go
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
package logic
|
||||||
|
|
||||||
|
import "fusenapi/constants"
|
||||||
|
|
||||||
|
// 刷新重连请求恢复上次连接的标识
|
||||||
|
func (w *wsConnectItem) resumeLateConnect(data []byte) {
|
||||||
|
clientId := string(data)
|
||||||
|
//id长度不对
|
||||||
|
if len(clientId) != 50 {
|
||||||
|
rsp := w.respondDataFormat(constants.WEBSOCKET_REQUEST_RESUME_LAST_CONNECT_ERR, "request id is invalid")
|
||||||
|
w.sendToOutChan(rsp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
publicMutex.Lock()
|
||||||
|
defer publicMutex.Unlock()
|
||||||
|
//存在是不能给他申请重新绑定
|
||||||
|
if _, ok := mapConnPool.Load(clientId); ok {
|
||||||
|
rsp := w.respondDataFormat(constants.WEBSOCKET_REQUEST_RESUME_LAST_CONNECT_ERR, "id has bound by other connect ")
|
||||||
|
w.sendToOutChan(rsp)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//重新绑定
|
||||||
|
w.uniqueId = clientId
|
||||||
|
rsp := w.respondDataFormat(constants.WEBSOCKET_REQUEST_RESUME_LAST_CONNECT_SUCCESS, clientId)
|
||||||
|
w.sendToOutChan(rsp)
|
||||||
|
return
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user