• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

接口延迟返回结果至前端页面

武飞扬头像
AndyHooop
帮助1

我在做一个机器吐档案袋的后台操作时,服务器通过websocket与机器进行连接,前端页面调用接口,服务器给机器主动发送消息,机器主动吐档案袋。并且返回成功或者失败的结果。由于返回的结果是机器通过websocket发送给服务端,前端接口不能同步获取结果,所以需要在收到机器传来的结果之后再进行返回,便需要一个延迟返回结果的功能。
代码如下:

      //通过uuid来区分消息
       String uuid = StringUtils.getUUID();
        JSONObject object = new JSONObject();
        object.put("uuid",uuid);
        object.put("type","dad");
        //给机器发送消息
       appletsWebSocket.sendMessage(object.toString(),machineId);
        String message = null;
        long start = System.currentTimeMillis();
        while (true){
            //msgMap是websocket接收到的消息,并把uuid作为key缓存进map
            Map<String, String> msgMap = AppletsWebSocket.msgMap;
            message = msgMap.get(uuid);
            if (message == null){
                //未接收到消息
                long end = System.currentTimeMillis();
                //设置7秒超时
                if ((end-start) > 7000){
                    return ResultGenerator.genFailResult("请求超时");
                }
            }else {
                //删除消息缓存
                msgMap.remove(uuid);
                break;
            }

        }
        JSONObject messageObject = JSONObject.parseObject(message);
        //解析吐档案袋结果
        String code = messageObject.get("code").toString();
学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgekief
系列文章
更多 icon
同类精品
更多 icon
继续加载