zuul/src/main/java/com/sinata/zuul/controller/NettyController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zuul/src/main/java/com/sinata/zuul/util/echo/NettyChannelMap.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zuul/src/main/resources/application.yml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
zuul/src/main/resources/redis.properties | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
zuul/src/main/java/com/sinata/zuul/controller/NettyController.java
@@ -36,13 +36,6 @@ NettyServerController.sendMsgToClient(channel, msg); return JSON.toJSONString(ResultUtil.success()); } //智慧屏(设备号) channel = NettyChannelMap.getData(id); if(null != channel){ NettyServerController.sendMsgToClient(channel, msg); return JSON.toJSONString(ResultUtil.success()); } return JSON.toJSONString(ResultUtil.error("推送失败-----用户id=" + id)); } zuul/src/main/java/com/sinata/zuul/util/applets/NettyWebSocketController.java
@@ -83,35 +83,30 @@ if (StringUtil.isNotEmpty(userId1)) { //确保账号在单个设备上登录 if (StringUtil.isNotEmpty(token)) { NettyChannelMap.update_(token.substring(0, 23), ctx);//存储单点登录的通道 String token_ = redisUtil.getValue("USER_Applets_" + userId1);//获取缓存中最新的数据 if (StringUtil.isNotEmpty(token_) && !token.equals(token_)) {//不在同一设备上登录,向其他设备发送数据 ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(0, 23)); JSONObject msg_ = new JSONObject(); msg_.put("code", 200); msg_.put("msg", "SUCCESS"); msg_.put("method", "OFFLINE"); msg_.put("data", new Object()); this.sendMsgToClient(ctx, msg_.toJSONString()); TimerTask timerTask = new TimerTask() { this.sendMsgToClient(data_, msg_.toJSONString()); new Timer().schedule(new TimerTask() { @Override public void run() { NettyChannelMap.remove_(ctx); NettyChannelMap.remove_(data_); } }; Timer timer = new Timer(); timer.schedule(timerTask, 3000); timer.cancel(); }, 5000); } if (StringUtil.isEmpty(token_)) {//确保登录的时候存储token失败的情况 NettyChannelMap.update_(token.substring(0, 23), ctx);//存储单点登录的通道 NettyChannelMap.update("Applets" + userId1, ctx); redisUtil.setStrValue("USER_Applets_" + userId1, token); } } //存储业务使用的通道 if (null != ctx && ctx.channel().isActive()) { NettyChannelMap.update("Applets" + userId1, ctx); // String s = NettyMsg.setMsg(Method.ok, new HashMap<String, Object>()); // ctx.writeAndFlush(Unpooled.copiedBuffer((s).getBytes())); } } zuul/src/main/java/com/sinata/zuul/util/echo/NettyChannelMap.java
@@ -104,6 +104,11 @@ } } public static synchronized void remove_(String key) { ctxMap.remove(key); } /** * Remove the data resources. zuul/src/main/java/com/sinata/zuul/util/echo/NettyServerController.java
@@ -106,72 +106,56 @@ if(StringUtil.isNotEmpty(token)){ String token_ = redisUtil.getValue("USER_APP_"+ userId1);//获取缓存中最新的数据 if(StringUtil.isNotEmpty(token_) && !token.equals(token_)){//不在同一设备上登录,向其他设备发送数据 ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(0, 23)); JSONObject msg_ = new JSONObject(); msg_.put("code", 200); msg_.put("msg", "SUCCESS"); msg_.put("method", "OFFLINE"); msg_.put("data", new Object()); this.sendMsgToClient(ctx, msg_.toJSONString());//给当前通道发送消息 TimerTask timerTask = new TimerTask() { this.sendMsgToClient(data_, msg_.toJSONString());//给当前通道发送消息 new Timer().schedule(new TimerTask() { @Override public void run() { NettyChannelMap.remove_(ctx); NettyChannelMap.remove(ctx); NettyChannelMap.remove_(data_); } }; Timer timer = new Timer(); timer.schedule(timerTask, 3000); timer.cancel(); }else{ }, 5000); } NettyChannelMap.update_(token.substring(0, 23), ctx); NettyChannelMap.update("USER" + userId1, ctx); String s = NettyMsg.setMsg(Method.ok, new HashMap<String, Object>()); ctx.writeAndFlush(Unpooled.copiedBuffer((s).getBytes())); } if(StringUtil.isEmpty(token_)){//确保登录的时候存储token失败的情况 redisUtil.setStrValue("USER_APP_" + userId1, token); } } //存储通讯通道 if(null != ctx && ctx.channel().isActive()){ NettyChannelMap.update("USER" + userId1, ctx); } }else{ //确保账号在单个设备上登录 String value = redisUtil.getValue("DEVICE_" + userId1); if(StringUtil.isNotEmpty(token) && StringUtil.isEmpty(device) && StringUtil.isEmpty(value)){//APP端登录的操作 if(StringUtil.isNotEmpty(token)){//APP端登录的操作 String token_ = redisUtil.getValue("DRIVER_" + userId1);//缓存中拿最新数据 if(StringUtil.isNotEmpty(token_) && !token.equals(token_)){//不在同一设备上登录,向当前设备发送数据 ChannelHandlerContext data_ = NettyChannelMap.getData_(token_.substring(0, 23)); JSONObject msg_ = new JSONObject(); msg_.put("code", 200); msg_.put("msg", "SUCCESS"); msg_.put("method", "OFFLINE"); msg_.put("data", new Object()); this.sendMsgToClient(ctx, msg_.toJSONString());//给当前通道发送消息 TimerTask timerTask = new TimerTask() { this.sendMsgToClient(data_, msg_.toJSONString());//给当前通道发送消息 new Timer().schedule(new TimerTask() { @Override public void run() { NettyChannelMap.remove_(ctx); NettyChannelMap.remove(ctx); NettyChannelMap.remove_(data_); } }; Timer timer = new Timer(); timer.schedule(timerTask, 3000); timer.cancel(); }else{ }, 5000); } NettyChannelMap.update("DRIVER" + userId1, ctx); NettyChannelMap.update_(token.substring(0, 23), ctx); String s = NettyMsg.setMsg(Method.ok, new HashMap<String, Object>()); ctx.writeAndFlush(Unpooled.copiedBuffer((s).getBytes())); } if(StringUtil.isEmpty(token_)){//确保登录的时候存储token失败的情况 redisUtil.setStrValue("DRIVER_" + userId1, token); } } //存储通讯通道 if(null != ctx && ctx.channel().isActive()){ NettyChannelMap.update("DRIVER" + userId1, ctx); String s = NettyMsg.setMsg(Method.ok, new HashMap<String, Object>()); ctx.writeAndFlush(Unpooled.copiedBuffer((s).getBytes())); } } } zuul/src/main/resources/application.yml
@@ -1,5 +1,5 @@ server: port: 80 port: 81 spring: application: @@ -24,10 +24,6 @@ path: /driver/** #配置请求URL的请求规则 url: http://127.0.0.1:8007 #真正的微服务地址,path匹配的请求都转发到这里 serviceid: driver-server #指定Eureka注册中心的服务id dispatch-server: #路由调度相关请求 path: /dispatch/** #配置请求URL的请求规则 url: http://127.0.0.1:8008 #真正的微服务地址,path匹配的请求都转发到这里 serviceid: dispatch-server #指定Eureka注册中心的服务id # 配置zuul超时时间 host: connect-timeout-millis: 150000 zuul/src/main/resources/redis.properties
@@ -4,11 +4,16 @@ # Redis·þÎñÆ÷µØÖ· spring.redis.host=127.0.0.1 # Redis·þÎñÆ÷Á¬½Ó¶Ë¿Ú #spring.redis.port=16379 spring.redis.port=6379 spring.redis.port=16379 # Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£© #spring.redis.password=mPMHThYzlT8DWgl8HLqwPEyPOiHDPPB5 spring.redis.password=123456 spring.redis.password=cKsEeyffDXG5PzNg8CIbrWxFluXrCprZ ## Redis·þÎñÆ÷µØÖ· #spring.redis.host=127.0.0.1 ## Redis·þÎñÆ÷Á¬½Ó¶Ë¿Ú #spring.redis.port=6379 ## Redis·þÎñÆ÷Á¬½ÓÃÜÂ루ĬÈÏΪ¿Õ£© #spring.redis.password=123456 # Á¬½Ó³Ø×î´óÁ¬½ÓÊý£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£© spring.redis.jedis.pool.max-active=1024 # Á¬½Ó³Ø×î´ó×èÈûµÈ´ýʱ¼ä£¨Ê¹ÓøºÖµ±íʾûÓÐÏÞÖÆ£©