【问题标题】:How to include node.js to static html如何将 node.js 包含到静态 html
【发布时间】:2016-11-08 14:48:17
【问题描述】:

我正在尝试在 javascript 中为其他用户做 API。我想在 Node.js 中使用 socket.io 实时创建一个聊天,但我想有机会通过 javascript 在通用 HTML 中加载这个 API。例如,如果有人将简单的 js 脚本复制并粘贴到您的 html 中,则会加载聊天。

我的应用程序在端口 8080 上的节点中运行,而我的其他页面是端口 80 上的 html。 如何将 node.js 放在其他页面中?

下面是我的chat.js

var express = require('express');
var app = express();
var http = require('http').Server(app);
var io = require('socket.io')(http);

var cors = require('cors');

app.use(cors());
app.options('*', cors());

app.get('/', function(req, res){
  res.sendFile(__dirname + '/index.html');

});

 io.on('connection', function(socket){

 console.log('a user connected');

   socket.on('chat message', function(msg){
   console.log('the user wrote:' +msg);
   io.emit('chat message', msg, id);

   });

 });

 http.listen(8080, function(){
  console.log('listening on *:8080');
 });

这样我尝试加载:

<script>
  $.ajax({

      xhrFields: {
          withCredentials: true
      },
      dataType: "html",
      url: "http://127.0.0.1:8080/index.js"

   }).done(function(data){

   // next function here;

   });
</script>

【问题讨论】:

  • 你试过把:8080放在网址里吗?
  • 是的,我可以在 8080 端口上正常运行 node.js。但我想要一个在端口 80 上运行的简单网站,并将这个聊天作为 API 包含在内,例如作为 javascript。我不能在节点服务。
  • ... 所以你在端口 80 上有一个 HTML 页面,并使用包含 :8080 的 URL 加载聊天。这有什么问题?
  • 或者您是否尝试运行 Socket.IO 服务器而不运行支持它的服务器?
  • 不,一开始我运行节点。

标签: javascript node.js html socket.io


【解决方案1】:

你不要“包含node.js”,你需要做的是包含通过socket.io(8080服务器)连接到服务器的脚本。

这篇文章可能对你有用http server and web sockets from separate servers

另一方面,您可以包含来自 8080 服务器的客户端 JavaScript,以使聊天正确运行。

已编辑以获取更多详细信息。

在 8080 上运行的服务器中,您可以使用 Socket.io 和 Express 创建服务器,在那里您可以拥有聊天的服务器端逻辑,并使用客户端逻辑提供 JavaScript 文件。假设,客户端 JavaScript 文件位于 http://localhost:8080/yourchat.js(当然,在某种现实世界中,您可能必须生成此文件才能将数据发送给正确的用户)

在 80 上运行的服务器中,您将拥有 div 元素和带有以下来源的脚本标记:http://localhost:8080/yourchat.js。使用这种模式,您应该能够嵌入聊天

【讨论】:

  • 如果我的应用程序在 localhost:8080 上运行,我如何将其加载到端口 80 上的其他 html 中?我只希望这个应用可以在我网站上的 div 中运行。
  • 我更新了我的问题。好吧,我通过节点 chat.js 运行我的聊天,但 html 在 index.html 中。在另一个域上,我尝试加载 div 这个 html 但我不能。当我只加载域时:127.0.0.1:8080 我在控制台日志中收到:“Access-Controll-Allow-Origin”。当我尝试加载 127.0.0.1:8080/chat.js 时,我收到错误 404。
猜你喜欢
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多