在真实服务器上运行nodejs,expressjs,socket.io应用程序无法正常工作

时间:2015-03-14 13:30:15

标签: node.js mongodb socket.io server

我能够在本地计算机http://localhost:3000上成功运行nodejs,expressjs,socket.io和mongodb appplication

现在,我已经在支持nodejs的真实服务器上上传了应用程序但是如何使用端口3000运行应用程序?所以www.mywebsite.com/MyApp:3000不起作用:(我是否必须在PORT中运行?

你能帮我吗?

这是我的服务器app.js代码:

var express = require('express');

var  mongoose = require ('mongoose');

var app = express();
app.use('/', express.static('../app/'));
app.use('/bower_components', express.static('../bower_components/'));

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

//mongodb databse
mongoose.connect ('mongodb://127.0.0.1/mydb', function (err) {
    if (err) {
        console.log (err);
    } else {
        console.log ("Connected to mongodb");
    }
});


io.sockets.on ('connection', function (socket) {
    console.log("hello world, I'm running fine!")
});

http.listen(3000, function () {
    'use strict';
});

编辑:如果我使用端口80,我会收到此错误:

 events.js:87
          throw er; // Unhandled 'error' event
                ^
    Error: listen EACCES
        at exports._errnoException (util.js:748:11)
        at Server._listen2 (net.js:1123:19)
        at listen (net.js:1166:10)
        at Server.listen (net.js:1251:5)
      ....etc

1 个答案:

答案 0 :(得分:0)

要使用您现有的节点/快速代码在生产环境中运行您的应用程序,您可以导航到http://www.mywebsite.com:3000/MyApp(假设您的防火墙允许端口3000)

您可以通过更改代码的这一部分来更改端口:

http.listen(3000, function () {
    'use strict';
});

网络的标准端口是80.因此您可以将其更改为

http.listen(80, function () {
    'use strict';
});

然后正常使用您的网址 - http://www.mywebsite.com/MyApp

注意:如果您的服务器上有另一个使用此端口的Web服务器,那么您将遇到问题,因为在端口空闲之前它不会侦听。您必须先禁用其他在端口80上侦听的Web服务器。 非特权用户(非root用户)也无法监听1024以下端口上的套接字。