不同端口上的节点服务器和客户端?

时间:2021-04-21 20:48:26

标签: node.js express xmlhttprequest webserver

下面我的代码是从我的 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 页面来加载数据,而服务器只是不会连接到客户端。

感谢您的任何反馈。

1 个答案:

答案 0 :(得分:0)

意识到我做错了什么。我不明白客户端需要在它自己的本地服务器上(我的当前设置为 localhost:3000),然后实际的网络服务器需要在它自己的端口(localhost:8000)上。然后,您需要将两者配置为通过代理相互通信,并且可能会绕过 cors。

无论如何,这就是我所做的,我现在可以在页面上获取信息。只是想弄清楚如何构建有效载荷,哈哈