我有这个node.js服务器文件:
var app = require('http').createServer(handler),
io = require('socket.io').listen(app),
fs = require('fs'),
app.listen(80);
function handler (req,res){
fs.readFile("/client.html"), function(err, data) {
if (err) {
console.log(err);
res.writeHead(500);
return res.end('Error loading client');
}
res.writeHead(200);
res.end(data);
});
}
当客户端尝试连接而不必通过cmd运行时,有没有办法让这个node.js文件通过apache默认端口号自动运行?
答案 0 :(得分:0)
无需通过cmd
运行它
简答:不完全。可以将此node.js文件视为创建与Apache相同的服务器。
该脚本创建一个服务器.createServer()
,然后告诉它侦听端口80 .listen(80)
。
由于socket.io绑定到此节点服务器(并且无法插入到Apache),因此您必须执行脚本(通过cmd运行它)才能使用它。
话虽如此:
我确定可以从节点服务器中创建一个守护进程(后台程序);因此在系统启动时自动启动它。如果您指定在端口xxxx上运行它,您可以告诉Apache将此端口映射到其自己的本地空间(其文件夹)。在本地计算机上,此指令如下所示:ProxyPass /app http://127.0.0.1:xxxx/
一台机器上会运行两台服务器;和Apache的http://127.0.0.1/app
将重定向到节点服务器(侦听xxxx)。
我还没有建议去那个兔子洞。要在Windows上开始使用socket.io,只需使用命令运行服务器创建一个批处理文件:node [path/to/your/server_file.js]
以便于使用。展开节点脚本。并停止使用Apache。 (Express是一个很好的模块,可以将节点用于Web内容......)