【发布时间】:2022-01-26 14:55:46
【问题描述】:
我可以创建一个 NodeJS 服务器,但它看起来没有实时接收消息。我有一个设备可以向我创建的这个服务器发送消息,我只想在每次收到响应时“console.log”。就是这么简单。 也就是说,重要的是要注意我无法控制向我发送数据的服务器。我还没有创建它,我无法触摸它。它是外部的。但我知道它正在将数据发送到我的服务器,我只是不知道如何实时接收它....
我现在的代码就是这个。如果您愿意,可以随意更改它并完全重做它,我在 NodeJS 方面不是很有经验。也可以随意使用任何其他库,因为我尝试使用许多其他库都没有成功。
import http from 'http';
const host = 'MY.IP';
const port = 0000;
const requestListener = function (req, res) {
res.writeHead(200);
res.end("--SERVER ONLINE.");
};
const server = http.createServer(requestListener);
server.listen(port, host, () => {
console.log(`Server is running on http://${host}:${port}`);
});
编辑:我相信我没有正确解释:我需要打印从上面代码中的其他服务器接收到的数据。 上面的代码创建服务器 A。 服务器 A 正在从 服务器 B 接收数据。 我需要打印 server B 发送到server A 的数据。 服务器 B 正在通过 HTTP POST 请求发送数据。
EDIT2:我已经更改了我的代码,并且我正在接近做我需要的事情,但仍然没有成功。现在我有:
import http from 'http';
const PORT = process.env.PORT || 8000;
const httpServer = http.createServer();
httpServer.on('request', (request, response) => {
if (request.url == '/')
response.end('Server online!');
console.log(request);
});
httpServer.listen(PORT, () => console.log(`Server running at ${PORT}`));
每次确实有对服务器的请求时,都会在我的屏幕上打印该请求。我可以看到 服务器 B 正在将数据发送到我创建的这个服务器,工作正常并且数据 100% 被发送。我只需要“console.log”我现在收到的数据。还是没有成功。
【问题讨论】:
-
还有什么问题?你用浏览器或邮递员试过吗?你的“实时”是什么意思你的代码应该可以工作。如果您使用 http 请求访问服务器,您将收到“--SERVER ONLINE”。
-
是的,它有效,但我相信我没有正确解释。我想打印从其他服务器接收的数据。假设上面代码中的服务器是服务器 A,它正在从服务器 B 接收数据。我想打印服务器 A 从服务器 B(在服务器 A 上)实时接收的数据。
-
服务器B如何发送数据?通过 HTTP Post 请求?通过 HTTP Put 请求。使用普通的 TCP 套接字?通过 XMPP?没有足够的信息来回答您的问题。
-
通过 HTTP 发布请求。我会更新我的问题。我完全忘记了这一点,
-
@Master 为什么需要服务器B?只需让网页执行 AJAX 发布请求以获取数据,然后 console.log 即可
标签: javascript node.js