Java中的长轮询客户端

时间:2018-12-04 15:10:18

标签: java long-polling server-push

我正在尝试编写一个通过访问接口来消耗服务器数据的客户端 提供此数据作为HTTP流(也称为HTTP服务器推送)。

首先需要通过执行PUT请求来启动推送模式,因此我编写了以下代码:

    JsonObject json = new JsonObject();

    json.addProperty("host", "http://myhost");
    json.addProperty("port", 443);
    json.addProperty("path_prefix", "/Omni/servlet");
    json.addProperty("auth_string", "Basic " + "user:pass");
    json.addProperty("retry_policy", 0);
    json.addProperty("data_format", "base64");

    Gson gson = new Gson();
    String json_string = gson.toJson(json);

    URL url = new URL("https://server.orbiwise.com/rest/pushmode/start");
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();

    conn.setRequestMethod("PUT");
    conn.setRequestProperty("Authorization", "Basic " + "user:pass");
    conn.setRequestProperty("Content-Type", "application/json");
    conn.setRequestProperty("Access-Control-Allow-Origin", "*");

    conn.setDoInput(true);
    conn.setDoOutput(true);
    conn.connect();

    OutputStreamWriter out = new OutputStreamWriter(conn.getOutputStream());
    out.write(json_string);
    out.close();

    if (conn.getResponseCode() == 200) {
        System.out.println("SUCCESS!: " + conn.getResponseCode());
    } else {
        System.out.println("ERROR: " + conn.getErrorStream() + conn.getResponseCode() );
    }

规范说,通过PUT请求注册后,数据将被发送到以下路径 / rest / callback / payloads / ul 。因此,我使用此确切路径( / rest / callback / payloads / ul )创建了一个Servlet,以接收 服务器应该发送的数据,但是不起作用。

我读到它发生是因为“我必须保持PUT请求的连接处于活动状态,但我真的不知道该怎么做。 每个提示都是不错的选择,或者提供一些其他建议。

0 个答案:

没有答案