node.js - 不同端口上的节点服务器和客户端?
问题描述
下面我有从我的 package.json 的单个调用运行的代码
const express = require('express');
const app = express();
const port = 3000;
//raspberryPI
//const dotenv = require('dotenv');
const { ChatClient } = require("dank-twitch-irc");
const { readPin } = require('./JavaScript/readPin');
const keywordsList = [];
*THIS IS A APP.USE FOR CORS, ONLY APPLICABLE IF I CAN GET THEM TO TALK IN THE FIRST PLACE*
app.use((req, res, next) => {
res.header("Access-Control-Allow-Origin", "http://localhost:3000"); // update to match the domain you will make the request from
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.get('/', function(req, res){
res.sendFile(__dirname+'/views/index.html'); // change the path to your index.html
});
app.get('/', (req, res) => {
//res.sendFile(__dirname+'/views/index.html');
// res.writeHead(200, {
// 'Connection': 'keep-alive',
// 'Cache-Control': 'no-cache',
// 'Content-Type': 'text/event-stream'
// });
// res.flushHeaders();
const arrayToString = JSON.stringify(Object.assign({}, keywordsList))
const stringToJsonObject = JSON.parse(arrayToString);
res.send("data: " + arrayToString + "\n\n");
//res.status(500).send({ error: 'something blew up' })
});
//app.use(express.static('views'))
//listen on port 3000
app.listen(port, () => console.info('Listening on port', { port }));
除此之外还有更多代码,但仅适用于上述代码
当我启动我的应用程序时,根据我放置静态 HTML 页面调用的位置(在第一个 GET res 之前或之后),我将在我的 localhost:3000 上启动并运行该页面,但我无法将它连接到 express 服务器或者我只需获取我推送到数组“keywordsList”但没有 HTML 页面的数据输出。每次在控制台中我都会遇到各种错误,如果需要,我可以显示这些错误。
通过在线阅读,我意识到我可能不明白我不能在同一个端口上同时为服务器和客户端提供服务并让他们互相交谈。虽然没关系,但网上没有很多关于如何修复它的解决方案。
我希望有人可以帮助我理解一些事情:我是否正确地假设我需要将我的客户端和服务器保持在不同的端口上以便它们能够正确地相互通信?如果是这样,有没有一种简单的方法可以在这里向我解释,或者我应该凭直觉去彻底检查我的项目的基本架构,以将客户端与服务器完全分开(我只是试图显示一个单独的 HTML页面会不断收到来自我的 API 的随机调用,所以我认为这有点多)。如果我不正确,我可以进一步解释我在浏览器中不断遇到的 GET 错误,但通常不是 404 app.js成立。
抱歉,代码有点混乱,随机评论。这是非常简单的,因为我来回尝试获取一个简单的 HTML 页面来加载数据,而服务器只是不会连接到客户端。
感谢您的任何反馈。
解决方案
意识到我做错了什么。我不明白客户端需要在自己的本地服务器上(我的当前设置为 localhost:3000),然后实际的网络服务器需要在自己的端口上(localhost:8000)。然后,您需要将两者配置为通过代理相互通信,并可能在 cors 周围工作。
无论如何,这就是我所做的,我现在可以在页面上获取信息。只需要弄清楚如何构建有效载荷 lol
推荐阅读
- php - Jquery不会在更改时触发ajax
- git - 如何将 AWS S3(最终在 AWS EFS)上的更改同步回 Github 存储库?
- javascript - 在 JavaScript 代码中结合两个函数不起作用,但在单个函数中工作正常
- c# - mainPage.xaml 不会加载到 MainWindow.xaml 中的 mainWindowMain 框架中
- javascript - 菜单IE11问题
- unit-testing - vue 测试禁用输入的 vuetify
- javascript - 如何显示表格中的所有数据?
- java - 强化拒绝服务:正则表达式
- currency - 如何通过 API 获取外汇汇率?
- php - 我正在通过 phpmailer 在 gmail 中发送消息,其中包含一个链接,该链接将在 localhost(xampp)中的我的 php 页面上重定向