|
@@ -38,6 +38,7 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
|
|
|
private final List<WsHandler> messageHandlers;
|
|
private final List<WsHandler> messageHandlers;
|
|
|
private final HisScriptSessionManager scriptSessionManager;
|
|
private final HisScriptSessionManager scriptSessionManager;
|
|
|
private final HospitalCodeCheck codeCheck;
|
|
private final HospitalCodeCheck codeCheck;
|
|
|
|
|
+
|
|
|
@Override
|
|
@Override
|
|
|
public HttpResponse handshake(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext) {
|
|
public HttpResponse handshake(HttpRequest httpRequest, HttpResponse httpResponse, ChannelContext channelContext) {
|
|
|
return httpResponse;
|
|
return httpResponse;
|
|
@@ -52,8 +53,10 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
|
|
|
}
|
|
}
|
|
|
if(StrUtil.isNullOrUndefined(authorization)){
|
|
if(StrUtil.isNullOrUndefined(authorization)){
|
|
|
Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.fail("授权失败")),"utf-8"));
|
|
Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.fail("授权失败")),"utf-8"));
|
|
|
- //给返回信息一些时间 todo1
|
|
|
|
|
|
|
+ //给返回信息一些时间
|
|
|
|
|
+ Thread.sleep(50);
|
|
|
channelContext.setClosed(true);
|
|
channelContext.setClosed(true);
|
|
|
|
|
+ Tio.remove(channelContext, "接受数据不符合业务规范");
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
if (StrUtil.isNotEmpty(authorization)) {
|
|
if (StrUtil.isNotEmpty(authorization)) {
|
|
@@ -68,13 +71,15 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
|
|
|
hisScriptSession.bindChannel(channelContext);
|
|
hisScriptSession.bindChannel(channelContext);
|
|
|
log.info("医院脚本连接成功,医院编码【{}】",authorization);
|
|
log.info("医院脚本连接成功,医院编码【{}】",authorization);
|
|
|
}else {
|
|
}else {
|
|
|
- unbind(channelContext);
|
|
|
|
|
Thread.sleep(50);
|
|
Thread.sleep(50);
|
|
|
channelContext.setClosed(true);
|
|
channelContext.setClosed(true);
|
|
|
if(log.isDebugEnabled()){
|
|
if(log.isDebugEnabled()){
|
|
|
log.debug("Authorization:{},鉴权失败",authorization);
|
|
log.debug("Authorization:{},鉴权失败",authorization);
|
|
|
}
|
|
}
|
|
|
Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.fail("授权失败")),"utf-8"));
|
|
Tio.send(channelContext,WsResponse.fromText(JSONUtil.toJsonStr(R.fail("授权失败")),"utf-8"));
|
|
|
|
|
+ Thread.sleep(50);
|
|
|
|
|
+ channelContext.setClosed(true);
|
|
|
|
|
+ Tio.remove(channelContext, "接受数据不符合业务规范");
|
|
|
}
|
|
}
|
|
|
return;
|
|
return;
|
|
|
}else {
|
|
}else {
|
|
@@ -100,11 +105,11 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
|
|
|
@Override
|
|
@Override
|
|
|
public Object onText(WsRequest wsRequest, String message, ChannelContext channelContext) {
|
|
public Object onText(WsRequest wsRequest, String message, ChannelContext channelContext) {
|
|
|
if (StrUtil.isEmpty(message)) {
|
|
if (StrUtil.isEmpty(message)) {
|
|
|
- unbind(channelContext);
|
|
|
|
|
channelContext.setClosed(true);
|
|
channelContext.setClosed(true);
|
|
|
|
|
+ Tio.remove(channelContext, "接受数据不符合业务规范");
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
- //心跳请求 todo
|
|
|
|
|
|
|
+ //心跳请求
|
|
|
if("ping".equals(message.trim().toLowerCase())){
|
|
if("ping".equals(message.trim().toLowerCase())){
|
|
|
Tio.send(channelContext,WsResponse.fromText("pong","utf-8"));
|
|
Tio.send(channelContext,WsResponse.fromText("pong","utf-8"));
|
|
|
return null;
|
|
return null;
|
|
@@ -123,18 +128,13 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
|
|
|
}
|
|
}
|
|
|
}catch (Exception e){
|
|
}catch (Exception e){
|
|
|
log.warn("websocket 接收到异常请求,token:{},message:{},userId:{}",channelContext.getToken(),message,JSONUtil.toJsonStr(channelContext.get(Constants.LOGIN_USER_KEY)));
|
|
log.warn("websocket 接收到异常请求,token:{},message:{},userId:{}",channelContext.getToken(),message,JSONUtil.toJsonStr(channelContext.get(Constants.LOGIN_USER_KEY)));
|
|
|
- unbind(channelContext);
|
|
|
|
|
- channelContext.setClosed(true);
|
|
|
|
|
|
|
+ channelContext.setCloseCode(ChannelContext.CloseCode.HEARTBEAT_TIMEOUT);
|
|
|
|
|
+ Tio.remove(channelContext, "接受数据不符合业务规范");
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- private void unbind(ChannelContext channelContext){
|
|
|
|
|
- Tio.unbindToken(channelContext);
|
|
|
|
|
- Tio.unbindUser(channelContext);
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 描述: 处理用户请求
|
|
* 描述: 处理用户请求
|
|
@@ -154,8 +154,8 @@ public class DefaultWebSocketMsgHandler implements IWsMsgHandler {
|
|
|
.collect(Collectors.toList());
|
|
.collect(Collectors.toList());
|
|
|
//传入格式错误,不支持该订阅id
|
|
//传入格式错误,不支持该订阅id
|
|
|
if(CollectionUtil.isEmpty(collect)){
|
|
if(CollectionUtil.isEmpty(collect)){
|
|
|
- unbind(channelContext);
|
|
|
|
|
channelContext.setClosed(true);
|
|
channelContext.setClosed(true);
|
|
|
|
|
+ Tio.remove(channelContext, "接受数据不符合业务规范");
|
|
|
return;
|
|
return;
|
|
|
}
|
|
}
|
|
|
collect.forEach(handler->handler.onMessage(messagingRequest,channelContext));
|
|
collect.forEach(handler->handler.onMessage(messagingRequest,channelContext));
|