如何使用Express和Socket.IO设置Node.JS?

时间:2014-08-26 20:56:26

标签: javascript linux node.js express socket.io

我试图建立一个Node.JS服务器,以这种方式监听我的CentOS服务器的3800端口:

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

app.get('/', function(req, res){
    res.send('<h1>Hello World!</h1>');
});

http.listen(3800, function(){
    console.log('Listening on port: 3800');
});

我有一个域,我在我的apache服务器上使用虚拟主机配置此域以侦听端口80.但是当我尝试访问时

http://example.com:3800 or http://server_ip:3800

它不能正常工作。浏览器不断尝试连接,然后我收到了错误。

因为我遵循了教程,所以我不知道自己做错了什么。我在这里搜索了其他问题,我试图将代码复制到我的index.js而没有。这个简单的&#34; Hello World&#34;没有显示,我无法访问服务器。

我做了&#34;节点index.js&#34;并且在我的服务器上显示&#34;正在侦听端口:3800&#34;完全,我有root权限,我用root用户做了一切。我做了&#34; npm install express&#34;和&#34; npm install socket.io&#34;命令也是,我尝试制作package.json文件,然后&#34; npm install&#34;。我搜索了另一个网站,我用&#34; npm install --save:express&#34;尝试了他们的指示,也赢得了工作。

我认为我的Linux配置存在问题。

我的问题是:当我访问http://example.com:3800时,如何使这个简单的脚本生效?

2 个答案:

答案 0 :(得分:1)

我的问题的正确答案是使用以下命令在iptables上打开端口:

  

iptables -I INPUT -p tcp --dport 3800 -j ACCEPT

然后使用以下命令保存:

  

/ sbin / service iptables save

基于CentOS6的系统。

答案 1 :(得分:0)

您的实际示例将转到localhost:3800

我不确定如何在apache服务器中运行nodejs:/

如果有帮助,我通常会与您的代码略有不同:

var app = require('express');
var http = require('http');

app.get('/', function(req, res){
    res.send('<h1>Hello World!</h1>');
});

app.listen(3800, function(){
    console.log('Listening on port: 3800');
});

EDIT -------------------------------

你的主要问题是你正在尝试在Apache中使用nodejs,如上所述,并非不可能,但我确定配置你的服务器很痛苦,并且不会是正常的LAMP堆栈配置,你可能会运行某些错误或切割功能,尝试在节点后端托管您的应用程序,如openshift或heroku