• 首页
  • 如何处理黑平台不出款
  • 黑平台怎么追回资金
  • 平台被黑不出款怎么办
  • 联系我们
  • 开通VIP发文章免审核

{{userData.name}}

个人中心
后台
{{item.count}}
{{textHint.loading}}
  • {{data.name}}({{data.count}}){{data.name}}
写文章
当前位置:首页-如何处理黑平台不出款-正文

第三方数据未拉取取不了 平台从第三方或者设备主动拉取数据

专业出黑 专业出黑 如何处理黑平台不出款10个月前0020.12M0
平台从第三方或者设备主动拉取数据场景:设备无法推送数据到平台,需要平台主动去调用第三方平台接口或者去调用设备的tcp服务等。

平台从第三方或者设备主动拉取数据

场景:设备无法推送数据到平台,需要平台主动去调用第三方平台接口或者去调用设备的tcp服务等。

流程 通过实现自定义协议的来自定义处理设备状态获取逻辑,比如通过调用第三方平台获取设备信息. 通过实现自定义协议的.来拦截消息发送,替换掉默认处理方式.在这里使用或者Vertx请求第三方或者设备. 请求后解析数据为对应的消息,调用.(,)完成默认消息处理之后,返回消息. 例子一,通过http到第三方平台获取数据. 第一步定义消息编码解码器

public class HttpMessageCodec implements DeviceMessageCodec {
    
    // 定义一个通用的响应,用于收到请求后响应
    private static final SimpleHttpResponseMessage response = SimpleHttpResponseMessage
            .builder()
            .payload(Unpooled.wrappedBuffer("{success:true}".getBytes()))
            .contentType(MediaType.APPLICATION_JSON)
            .status(200)
            .build();
    
    @Override
    public Transport getSupportTransport() {
        return DefaultTransport.HTTP;
    }
    
    @Nonnull
    @Override
    public Publisher<? extends Message> decode(@Nonnull MessageDecodeContext context){
        // 这里用于别的平台请求/通知jetlinks的请求处理
        // 把消息转换为http消息
         HttpExchangeMessage message = (HttpExchangeMessage) context.getMessage();
        String url = message.getUrl();
        // 这里通常需要判断是不是自己需要的请求,如果不是直接返回/响应,防止非法请求
        if (!url.endsWith("/eventRcv")) {
            return message.response(response).then(Mono.empty());
        }
        // 获取具体消息类型
        ByteBuf payload = message.getPayload();
        String string = payload.toString(StandardCharsets.UTF_8);
        // 通常来说,云平台通知的定义为事件消息(也可以定义成别的消息)
        EventMessage eventMessage = new EventMessage();
        eventMessage.setEvent("test");
        eventMessage.setDeviceId(string);
        eventMessage.setData(string);
        eventMessage.setMessageId(String.valueOf(System.currentTimeMillis()));
        eventMessage.setTimestamp(System.currentTimeMillis());
        return message.response(response).thenMany(Flux.just(eventMessage));
    }
    
    
    @Nonnull
    @Override
    public Publisher<? extends EncodedMessage> encode(@Nonnull MessageEncodeContext context) {
        // 对接其他云平台,命令发起不在这里处理,所以这里返回空就可以了
        return Mono.empty();
    }
    
}

第二步 定义一个消息拦截器

@Slf4j
@AllArgsConstructor
@Getter
@Setter
public class HttpMessageSenderInterceptor implements DeviceMessageSenderInterceptor{
    // 通过构造器注入一个编码消息处理器,用于消息的持久化
	private DecodedClientMessageHandler handler;
    
    private static final WebClient webclient=WebClient.builder().build();
   /**
     * 在消息发送后触发.
     *
     * @param device  设备操作接口
     * @param message 源消息
     * @param reply   回复的消息
     * @param      回复的消息类型
     * @return 新的回复结果
     */
    public <R extends DeviceMessage> Flux<R> afterSent(DeviceOperator device, DeviceMessage message, Flux<R> reply) {
        return Flux.from(
            // 从配置中获取url等各种请求所需参数
            device.getConfigs("url")
                        .flatMap(values->{
                            String url=values.getValue("url").map(Value::asString).orElse(null);
                            // 通常发起请求都是通过方法调用
                            FunctionInvokeMessage invokeMessage = (FunctionInvokeMessage) message;
                            // 从命令发起的上下文中获取消息体
        				  List<FunctionParameter> inputs = invokeMessage.getInputs();
                            Map< String, Object> body=iputs
                                .stream()
                                .collect(Collectors
                                         .toMap(FunctionParameter::getName, 			FunctionParameter::getValue));
                            return webclient  // 构造WebClient
                            	.post()  // 指定请求类型
                            	.uri(url) // 请求路径
                            	.bodyValue(body) // 请求参数
                           		.retrieve() // 发起请求
                           		.bodyToMono(String.class) // 响应参数
                           		.flatMap(s -> {
                                    // 响应参数包装为功能回复参数
                               		FunctionInvokeMessageReply reply1 = new FunctionInvokeMessageReply();
                               		reply1.setSuccess(true);
                               		reply1.setMessage(s);
                               		reply1.setDeviceId(message.getDeviceId());
                               		reply1.setMessageId(message.getMessageId());
                               		reply1.setTimestamp(System.currentTimeMillis());
                               		reply1.setOutput(s);
                               		reply1.setFunctionId(((FunctionInvokeMessage) message).getFunctionId());
                               return Mono.just(reply1)
                                       .map(deviceMessage->(R)deviceMessage);
                           })
                           // 消息持久化
                           .flatMap(msg->handler.handleMessage(device,msg)
                                   .thenReturn(msg));
                        })
                );
    }
}

第三步 定义一个设备状态检测器

/**
* 这个接口会在进入设备详情页面和刷新设备状态时调用
*/
@Slf4j
public class HttpDeviceStateChecker implements DeviceStateChecker {
    @Override
    public @NotNull Mono<Byte> checkState(@NotNull DeviceOperator device) {
        // 如果第三方平台有提供设备状态查询接口,则调用接口确定设备状态,否则设置为设备在线,方便发起功能或者属性查询
        return Mono.just(DeviceState.online);
    }
}

第四步 定义协议处理器

public class HttpProtocolSupportProvider implements ProtocolSupportProvider{
    
        private static final DefaultConfigMetadata httpRequest = new DefaultConfigMetadata(
            "Http请求配置"
            , "")
            .add("url", "url", " http请求地址", new StringType());
    
    @Override
    public Mono<? extends ProtocolSupport> create(ServiceContext serviceContext){
        CompositeProtocolSupport support = new CompositeProtocolSupport();
        support.setId("http-demo-v1");
        support.setName("http调用第三方接口DEMO");
        support.setDescription("http调用第三方接口DEMO");
        support.setMetadataCodec(new JetLinksDeviceMetadataCodec());
        // 设置一个编解码入口
        HttpMessageCodec codec = new HttpMessageCodec();
        support.addMessageCodecSupport(DefaultTransport.HTTP, () -> Mono.just(codec));
        // 添加配置项定义
        support.addConfigMetadata(DefaultTransport.HTTP, httpRequest);
        HttpDeviceStateChecker httpDeviceStateChecker = new HttpDeviceStateChecker();
        // 设置设备状态检查接口
        support.setDeviceStateChecker(httpDeviceStateChecker);
        // 设置HTTP消息拦截器,用于发送HTTP消息
        serviceContext.getService(DecodedClientMessageHandler.class)
                .ifPresent(handler -> support.addMessageSenderInterceptor(new HttpMessageSenderInterceptor(handler)));
        return Mono.just(support);
    }
}

例子二,通过tcp短链接从设备拉取数据.

TODO

相关文章

  • 平台以各种理由不给提款 时刻警惕!十种常见的电信网络诈骗方式

    平台以各种理由不给提款 时刻警惕!十种常见的电信网络诈骗方式

    时刻警惕!十种常见的电信网络诈骗方式…
    专业出黑 专业出黑 如何处理黑平台不出款1年前0015.88M0
  • 网络被黑不能提款 网堵风控审核不能取款怎么办 。 追回必看文章

    网络被黑不能提款 网堵风控审核不能取款怎么办 。 追回必看文章

    看了这五个原因,戒黑网站吧“中国反黑网站第一人”马洪刚现场揭秘黑网站千术第三个原因:环境,圈子。与此同…
    专业出黑 专业出黑 如何处理黑平台不出款1年前0023.18M0
  • 碰到黑平台提不了款怎么办 网堵风控审核提不了款怎么办 - 不懂怎么办看这里

    碰到黑平台提不了款怎么办 网堵风控审核提不了款怎么办 - 不懂怎么办看这里

    网投案被黑案例我们公司以前有个出纳,女的在我们公司做了七八年了。我们,我们一起来说网堵风控审核提不了款…
    专业出黑 专业出黑 如何处理黑平台不出款1年前0019.03M0
  • 网上平台不给取款 被黑提款还能出款吗、解决的办法攻略

    网上平台不给取款 被黑提款还能出款吗、解决的办法攻略

    1、内容荐语在网上黑服务平台网站没了该怎么办,想来大家都想要知道该怎么办好,实际上很多人或是不清楚怎么解决,由于这中状况有时或是投诉没结果的,警…
    专业出黑 专业出黑 如何处理黑平台不出款11个月前0016.17M0
  • 老婆微信聊天**怎么才能不被查出来? 教你同步查看老公聊天**内容,不被发现。

    老婆微信聊天**怎么才能不被查出来? 教你同步查看老公聊天**内容,不被发现。

    微信同步查看老婆聊天**同步自己老婆的微信聊天**,我们首先选择的方法就是在其他设备上登录自己老婆的微信账号。想必很多人都知道…
    专业出黑 专业出黑 如何处理黑平台不出款1年前0025.15M0
  • 黑平台提款成功到账不了怎么办 网上被黑平台不给提款怎么做能出

    黑平台提款成功到账不了怎么办 网上被黑平台不给提款怎么做能出

    1、小编的话在网上黑平台不给出款怎么办,不知道怎么办,那么就不要放弃,看完这篇文章,就知道黑平台的真假了,所以网上被黑的情况,就更需要了解一些办…
    专业出黑 专业出黑 如何处理黑平台不出款8个月前0016.96M0
  • 赢了无法出款 韩寒沈腾,赢了

    赢了无法出款 韩寒沈腾,赢了

    尤其是关于拉力赛的大场面视觉呈现,大漠、烟尘和极速扭动冲刺的赛车,让人看得一身热血。…
    专业出黑 专业出黑 如何处理黑平台不出款11个月前0027.91M0
  • 平台钱取不出来 取自己的钱这么难?储户吐槽银行,柜员却倒苦水:没识别出涉诈,我被扣7000元

    平台钱取不出来 取自己的钱这么难?储户吐槽银行,柜员却倒苦水:没识别出涉诈,我被扣7000元

    欢迎收听红星新闻|听热点的头条类最新章节声音“取自己的钱这么难?储户吐槽银行,柜员却倒苦水:没识别出涉诈,我被扣7000元”。近期,你是否在银行…
    专业出黑 专业出黑 如何处理黑平台不出款10个月前0019.33M0
  • 网上平台取款不给维护审核 网络上客服说风控审核取款失败

    网上平台取款不给维护审核 网络上客服说风控审核取款失败

    1、作者的话这是最黑的一个,而其他的只会限制你账户的一些功能,比如额度不能正常转换,或者你的额度不能低于那个,需要多少水才能出来。…
    专业出黑 专业出黑 如何处理黑平台不出款10个月前0018.74M0
  • 被黑了怎么办? 转账后被拉黑了怎么办?一招教你挽回损失!

    被黑了怎么办? 转账后被拉黑了怎么办?一招教你挽回损失!

    江苏城市频道…
    专业出黑 专业出黑 如何处理黑平台不出款7个月前0010.55M0
  • 财务维护通道维护出不了 知识课堂 | 花式攒金、异地存款……当代年轻人如何理财?

    财务维护通道维护出不了 知识课堂 | 花式攒金、异地存款……当代年轻人如何理财?

    花式攒金、异地存款……当代年轻人如何理财?…
    专业出黑 专业出黑 如何处理黑平台不出款8个月前0010.85M0
  • 如何追回黑平台亏损 黑平台亏损了怎么办?如何维权追回?

    如何追回黑平台亏损 黑平台亏损了怎么办?如何维权追回?

    对一般投资人来说,相信大家都有一个疑问,正规和合法平台是不是一个说法?其实交易平台是不是正规,这个与合法有时候并不完全一致。正常情况除了要考察他…
    专业出黑 专业出黑 如何处理黑平台不出款1年前0027.22M0

最新文章

  • 平台系统维护提不了款怎么办 曝某借贷平台涉高利贷陷阱用户权益难维护
  • 在线ai绘画生成软件 4款国内免费ai绘画软件,无限制无审核,巨好玩! - 哔哩哔哩
  • 利用chatgpt进行高考志愿填报 选择计算机专业,后悔莫及?大学老师:高考志愿填报慎选!
  • 在线ai绘画生成软件 7款免费的ai绘画生成器推荐,ai自动生成绘画 - 哔哩哔哩
  • 互联网流量怎么挣钱 流量变现的又一暴利项目,新手可做每天赚500
  • 在线ai绘画生成软件 收藏这18款免费ai绘画软件,轻松掌握ai绘画在线生成图片! - 哔哩哔哩
  • 网上被黑不给提怎么解决 在网上的平台说数据延时提现不了
  • 阿里版chatgpt怎么申请 中国版ChatGPT会是谁?ChatGPT本尊回应了
  • 网上被黑不给提怎么解决 网上提款审核失败,网上被黑提款风控审核失败不给提款怎么解决?可以这样操作
  • 人工智能chatgpt4.0能打游戏吗 超星尔雅《人工智能》章节测验答案
  • 被平台黑了不能取款怎么办 网上被黑平台不让提现困扰您?正确解决方法来帮您一臂之力
  • 如何让chatgpt写完完整代码 用DeepSeek全自动写代码
  • 被平台黑了不能取款怎么办 网上遇到被黑了不能提款怎么办(以下几点教你解决)
  • 如何让chatgpt对文档内容进行整理 原来 ChatGPT 可以这样用:根据个人需求订做一周健康菜单
  • 如何让chatgpt写完完整代码 ChatGPT史诗级大更新!Canvas来了,可辅助完成编程、写作
  • 赢钱被黑网站一直不给提款怎么解决 “警醒”streamingapp是新型诈骗软件,违规操作错为不给提现怎么办
  • 如何让chatgpt对文档内容进行整理 ChatGPT“成人模式”:AI新世界的潘多拉魔盒?
  • 人民币 特别提款权 人民币SDR权重上调至12.28%,有什么作用?专家解读
  • 发货软件哪个好 发货单软件免费版

没有相关内容

Copyright © 2022-至今 被平台黑了取不了款怎么出黑•现在最火的免费发帖推广平台网站 陕ICP备2023010157号
42 次查询在 0.829 秒, 使用 41.44MB 内存