|
@@ -40,14 +40,16 @@ export default class Signal {
|
|
|
|
|
|
handleSignal(updateData, i) {
|
|
|
if (!this.signalHandleActived) return;
|
|
|
+
|
|
|
const time1 = Date.now()
|
|
|
const { signal, alreadyUpdateYUV } = updateData;
|
|
|
-
|
|
|
this.handleActionResponses(signal), this._room.handleSignalHook(signal);
|
|
|
- const time2 = Date.now();
|
|
|
|
|
|
- if (this.handleSignalPartialArray2.add(time2 - time1), !alreadyUpdateYUV)
|
|
|
+ const time2 = Date.now();
|
|
|
+ this.handleSignalPartialArray2.add(time2 - time1);
|
|
|
+ if (!alreadyUpdateYUV)
|
|
|
{
|
|
|
+ // 断流时,人物停止移动
|
|
|
const mainUserState = signal.newUserStates && signal.newUserStates.find(state => state.userId === this._room.userId);
|
|
|
if ((mainUserState && mainUserState.renderInfo) && (this._room._userAvatar && this._room._userAvatar.isMoving))
|
|
|
{
|
|
@@ -62,6 +64,7 @@ export default class Signal {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ // 数据过滤
|
|
|
this.isUpdatedYUV = alreadyUpdateYUV;
|
|
|
if (!signal) {
|
|
|
logger.warn("metadata signal is empty");
|
|
@@ -75,28 +78,31 @@ export default class Signal {
|
|
|
this._room.handleRepetLogin();
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
if (
|
|
|
signal.code !== void 0 &&
|
|
|
signal.code !== Codes.Success &&
|
|
|
signal.code !== Codes.ActionMaybeDelay &&
|
|
|
signal.code !== Codes.DoActionBlocked &&
|
|
|
signal.code !== Codes.GetOnVehicle
|
|
|
- )
|
|
|
- if (signal.code === Codes.UnReachable)
|
|
|
- logger.debug("signal errcode: ", signal.code), this._room.proxyEvents("unreachable");
|
|
|
- else {
|
|
|
+ ) {
|
|
|
+ if (signal.code === Codes.UnReachable) {
|
|
|
+ logger.debug("signal errcode: ", signal.code);
|
|
|
+ this._room.proxyEvents("unreachable");
|
|
|
+ } else {
|
|
|
if (!this._room.joined) {
|
|
|
- const nt = getErrorByCode(signal.code),
|
|
|
- ot = new nt(signal.msg);
|
|
|
- i(ot)
|
|
|
+ const CodeError = getErrorByCode(signal.code),
|
|
|
+ error = new CodeError(signal.msg);
|
|
|
+ i(error)
|
|
|
}
|
|
|
- logger.error("signal errcode: ", signal), this._room.emit("error", signal)
|
|
|
+ logger.error("signal errcode: ", signal);
|
|
|
+ this._room.emit("error", signal);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
const time3 = Date.now();
|
|
|
this.handleSignalPartialArray3.add(time3 - time2);
|
|
|
const mainUserState = signal.newUserStates && signal.newUserStates.find(state => state.userId === this._room.userId);
|
|
|
+ // Broadcast相关 暂时用不到
|
|
|
if (signal.broadcastAction) try {
|
|
|
const nt = JSON.parse(signal.broadcastAction.data);
|
|
|
Broadcast.handlers.forEach(ot => ot(nt))
|
|
@@ -105,11 +111,13 @@ export default class Signal {
|
|
|
}
|
|
|
|
|
|
const time4 = Date.now();
|
|
|
- this.handleSignalPartialArray4.add(time4 - time3),
|
|
|
+ this.handleSignalPartialArray4.add(time4 - time3);
|
|
|
+ // 更新人物数据
|
|
|
signal.newUserStates && signal.newUserStates.length > 0 && this._room.avatarManager.handleAvatar(signal);
|
|
|
|
|
|
const time5 = Date.now();
|
|
|
- if (this.handleSignalPartialArray5.add(time5 - time4), mainUserState != null && mainUserState.playerState) {
|
|
|
+ this.handleSignalPartialArray5.add(time5 - time4);
|
|
|
+ if (mainUserState != null && mainUserState.playerState) {
|
|
|
this._room._currentClickingState = mainUserState.playerState;
|
|
|
const { pathName, attitude, areaName, skinId } = mainUserState.playerState;
|
|
|
if (
|
|
@@ -123,27 +131,30 @@ export default class Signal {
|
|
|
this._room.pathManager.currentAttitude = attitude,
|
|
|
this._room._userAvatar && (this._room._userAvatar.motionType = attitude)
|
|
|
}
|
|
|
- this._room.sceneManager.getCurrentShaderMode() !== ECurrentShaderMode.pano &&
|
|
|
- !this._room.isPano &&
|
|
|
- mainUserState.playerState.camera &&
|
|
|
- !this._room.panorama.isLoading &&
|
|
|
- this._room.camera.setCameraPose(mainUserState.playerState.camera)
|
|
|
+ // 更新相机数据
|
|
|
+ this._room.sceneManager.getCurrentShaderMode() !== ECurrentShaderMode.pano
|
|
|
+ && !this._room.isPano
|
|
|
+ && mainUserState.playerState.camera
|
|
|
+ && !this._room.panorama.isLoading
|
|
|
+ && this._room.camera.setCameraPose(mainUserState.playerState.camera)
|
|
|
}
|
|
|
mainUserState != null && mainUserState.renderInfo && this._room.camera.handleRenderInfo(mainUserState);
|
|
|
|
|
|
const time6 = Date.now();
|
|
|
- if (this.handleSignalPartialArray6.add(time6 - time5), signal.actionType !== void 0) {
|
|
|
+ this.handleSignalPartialArray6.add(time6 - time5);
|
|
|
+ if (signal.actionType !== void 0) {
|
|
|
const { actionType, code, echoMsg, traceId } = signal;
|
|
|
- actionType === Actions.Echo &&
|
|
|
- code === Codes.Success &&
|
|
|
- this._room.networkController.rtcp.heartbeat.pong(echoMsg, traceId),
|
|
|
- code !== Codes.Success ? eventsManager.remove(traceId, code) : [
|
|
|
+ // 移除暂存的traceId
|
|
|
+ actionType === Actions.Echo
|
|
|
+ && code === Codes.Success
|
|
|
+ && this._room.networkController.rtcp.heartbeat.pong(echoMsg, traceId)
|
|
|
+ , code !== Codes.Success ? eventsManager.remove(traceId, code) : [
|
|
|
Actions.GetReserveStatus, Actions.Broadcast, Actions.ChangeNickname, Actions.ConfirmEvent,
|
|
|
Actions.ReserveSeat, Actions.Rotation, Actions.TurnTo, Actions.RotateTo, Actions.SetPlayerState,
|
|
|
Actions.GetNeighborPoints, Actions.TurnToFace, Actions.AudienceChangeToVisitor, Actions.RemoveVisitor,
|
|
|
Actions.GetUserWithAvatar, Actions.GetNewUserState, Actions.SetSyncPolicy
|
|
|
- ].includes(actionType) &&
|
|
|
- eventsManager.remove(traceId, code, signal)
|
|
|
+ ].includes(actionType)
|
|
|
+ && eventsManager.remove(traceId, code, signal)
|
|
|
}
|
|
|
|
|
|
const time7 = Date.now();
|