簡體   English   中英

在真實服務器上運行nodejs,expressjs,socket.io應用程序不起作用

[英]Running nodejs, expressjs, socket.io application on a real server not working

我能夠在本地計算機http://localhost:3000上成功運行nodejs,expressjs,socket.io和mongodb應用程序

現在,我已將應用程序上載到支持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

要使用現有的節點/快速代碼在生產環境中運行您的應用,請導航至http://www.mywebsite.com:3000/MyApp (假設防火牆允許端口3000)

您可以通過更改以下部分代碼,將端口更改為所需端口:

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

Web的標准端口是80。因此您可以將其更改為

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

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

注意:如果您的服務器上已經有另一個Web服務器正在使用此端口,那么您將遇到問題,因為它將在端口空閑之前不進行監聽。 您必須先禁用其他Web服務器,然后才能監聽端口80。 非特權用戶(非root用戶)也無法監聽端口號低於1024的套接字。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM