NodeJS客户端使用服务器流回响应

时间:2020-11-11 12:49:56

标签: node.js client

我正在尝试向无法控制的服务器发送POST请求。服务器收到POST,但每次发生外部事件时都发送响应。 因此,通过“订阅”一个POST,我应该能够收到多个响应,直到连接断开。 我曾尝试使用套接字来执行此操作,但似乎套接字以服务器无法识别的TCP形式发送-它必须是HTTP(我使用Wireshark进行了检查,因为它们具有可用来测试连接的APITool)。

这是我接收数据的代码:

var net = require("net");
var client = new net.Socket();
client.connect(
  8080,
  "hostname.com",
  function() {
    console.log("Connected");
    client.write(`POST /Subscribe HTTP/1.1
Authorization: Basic authcode
Host: hostname.com:8080
Content-Length: 1078
Connection: keep-alive
Keep-Alive: 300

<?xml version="1.0" encoding="UTF-8"?>
<config version="1.7">
... (some XML here)
</config>


`);
    console.log("Finished Write");
  }
);

client.on("data", function(data) {
  console.log("Received " + data.length + " bytes\n" + data);
});

client.on("close", function() {
  console.log("Connection closed");
});

client.on("error", function(err) {
  console.log("Connection error" + err);
});

client.on("end", function(err) {
  console.log("Connection end" + err);
});

是否有一种方法可以强制套接字作为HTTP发送,或者有一种方法可以通过HTTP通过POST请求接收“流”?

谢谢。

编辑1:添加原始HTTP代码whePOST / SetSubscribe HTTP / 1.1

Host: hostname.com:8080
Keep-Alive: 300
Authorization: Basic authkey
Content-Type: application/xml
Content-Length: 1076

<?xml version="1.0" encoding="UTF-8"?>
... XML
</config>

这给出了响应:

<?xml version="1.0" encoding="UTF-8" ?>
<config version="1.7" xmlns="http://www.ipc.com/ver10">
    ... XML
</config>

具有以下标题:

Content-Type: application-xml
Content-Length: 397
Connection: keep-alive

当我在WireShark中观看此内容时,我看到返回了多个响应,但是我不知道如何在代码中“抓住”它们以使用它们。邮递员并没有显示这些新回复中的每一个。

0 个答案:

没有答案