我可以在不返回 html 文件的情况下使用 NodeJS 吗?
Posted
技术标签:
【中文标题】我可以在不返回 html 文件的情况下使用 NodeJS 吗?【英文标题】:Can I use NodeJS without returning html files? 【发布时间】:2016-11-12 01:27:53 【问题描述】:我正在为大多数网站创建一个使用 php 和 javascript 的网站。我只想将 NodeJS 用于网站上的实时聊天消息功能,有点喜欢 facebook 的。我可以在不返回任何 html 文件的情况下使用 NodeJS 吗?实用吗?
编辑: 我当前的服务器代码是这样的:
var http = require('http');
console.log("before");
var app = http.createServer(function (request, response)
).listen(21);
var io = require('socket.io').listen(app);
io.sockets.on('connection', function(socket)
console.log("Client Connected");
);
这里是相关的客户端代码
<script type="text/javascript">
var socketio = io.connect("localhost:21");
</script>
那么为什么客户端连接从不记录?返回 html 文件时,我已经让它工作了一段时间,但由于某种原因,这不起作用:|。
【问题讨论】:
是的,当然可以。这是一个通用工具。 返回 HTML?能否请您详细说明。 是的,可以使用ExpressJS & Socket.io制作这种应用程序 当人们已经回答了第一个问题时,您已编辑提出另一个不同的第二个问题。建议将更具体的问题移至新帖子。 @NeilCresswell 好的,很遗憾,我必须等待 90 分钟才能发帖 【参考方案1】:当然可以,看看这个 this,我想这可能就是你要找的。p>
【讨论】:
【参考方案2】:可以,但是你不能使用port 21
(应该换个其他端口,我用3000
)。
在客户端 html 中:
<script src="http://localhost:3000/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socketio = io.connect("http://localhost:3000");
</script>
【讨论】:
【参考方案3】:是的,你可以,但如果你想避免使用 NodeJS,你可以使用 PHP 的 Websockets 来实现相同的目标。看看这个库,例如Ratchet library for to use Websockets in PHP
【讨论】:
【参考方案4】:把 Node 想象成一个通用服务器,而不是专门提供 HTML 页面的 Web 服务器。是的,它可以用于 HTML,但您不需要,我认为它最常用作提供 JSON 的 RESTful 服务器。
有一些很棒的 Node 套接字库,例如 rabbit.js,它们非常适合消息传递应用程序。有些甚至附带一些聊天示例,例如更流行的 socket.io。
【讨论】:
【参考方案5】:我觉得在 PHP 系统中进行实时聊天有点困难。 实时聊天需要将数据从客户端推送和拉取到服务器。 PHP系统可以从服务器中提取数据(例如html)。但我认为您通常不能仅在PHP中动态地将数据发送到服务器。所以如果你想在 PHP 系统中进行实时聊天,你需要使用 AJAX 到 NodeJS API。 也请看这篇文章。How to integrate nodeJS + Socket.IO and PHP?
编辑:
我认为您应该在 io.connect() 参数中添加 http 或 https。 io.connect('http://localhost:21');
但是您应该更改端口,因为此端口不安全。 例如 3000 会更好。
io.connect('http://localhost:3000');
您应该在服务器 js 文件中修复端口号。
【讨论】:
【参考方案6】:您几乎可以将 NodeJS 用于任何事情,并且只需几百行 Socket.IO,您就可以在众多场景中推送和流式传输数据。 Github 和其他网站上有很多关于此的信息。
【讨论】:
以上是关于我可以在不返回 html 文件的情况下使用 NodeJS 吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以在不使用 javascript 的情况下从带有 href 或其他内容的 .html 文件调用 .java 文件吗[关闭]