2015-12-29 169 views
0

我做了一個在線多人遊戲。當我在localhost:3000上使用node.js命令提示符運行它時,我工作得很完美。但是當我嘗試在網站上運行它時,它並沒有執行我的app.js文件所說的操作。我的問題是;在網站上運行node.js,但不在本地主機

如何讓我的node.js項目在我的網站上運行,而不是在本地主機上運行? 什麼是港口而不是3000? 我可以通過ftp上傳一些文件到我的網站嗎?

這裏是我的app.js文件

var express = require('express'), 
app = express(), 
server = require('http').createServer(app), 
io = require('socket.io').listen(server); 

var usernumm = 0; 
var usernum1 = []; 

app.use(express.static(__dirname + '/public')); 

server.listen(3000); 

app.get('/', function(req, res){ 
res.sendfile(__dirname + '/index.html'); 
}); 

io.sockets.on('connection', function(socket){ 


var endpoint = socket.manager.handshaken[socket.id].address; 
console.log('***New connection from ' + endpoint.address + ':' +  endpoint.port); 

usernumm++; 
io.sockets.emit('usernum', usernumm); 
usernum1[usernumm] = endpoint.port; 
console.log('usernum'+usernumm+'geldi'+findusernum()); 


socket.on('button1socket', function(){ 

    io.sockets.emit('button1f', findusernum()); 
    console.log('user '+findusernum()+' pressed a button'); 

}); 
socket.on('buttonclickable', function(){ 

    io.sockets.emit('buttonclickable1', findusernum()); 

}); 

socket.on('disconnect', function() { 
    usernumm--; 
    io.sockets.emit('usernum', usernumm); 
    //sockets[usernum] = socket.port; 
    console.log('***Client disconnected'); 
}); 


//finds number of online users 
function findusernum(){ 
    for(var i = 0; i<9;i++){ 
     if(usernum1[i] == endpoint.port){return i;}else{} 
     } 
} 


}); 
+0

[去節點生活](http://code.tutsplus.com/tutorials/going-live-with-node-net-33923) – adeneo

+0

我推薦Heroku,基本上你只是上傳它,它應該跑。 您還應該注意: 'var port = process.env.PORT || 3000' 這可以讓您的服務器根據環境端口運行。 –

+1

@MuliYulzary感謝您的評論,它幫助。 Heroku真棒。和這個('process.env.PORT || 3000')也有幫助。 –

回答

1

嘗試:

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

var ip = 'iphere'; 
var port = 80; 

app.use(express.static(__dirname + '/public')); 

app.get('/', function(req, res){ 
    res.sendfile(__dirname + '/index.html'); 
}); 

socketServer.on('connection', function(socket){ 
    console.log("A Client has connected."); 
    socket.on('disconnect', function(){ 
     console.log("A Client has disconnected."); 
    }); 
}); 

httpServer.listen(port, ip, function(){ 
    console.log("Listening to "+ip+":"+port); 
}); 

的index.html:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Index</title> 
    <script type="text/javascript" src="http://ip:port/socket.io/socket.io.js"></script> 
    <script type="text/javascript"> 
     var socket; 
     try{ 
      socket = io("http://ip:port/", {'forceNew':true }); 
      socket.on('connect', function(error){ 
       if(error){ 

       } 
      }); 
     }catch(e){ 

     } 
    </script> 
</head> 
<body> 

</body> 
</html> 

您指定的IP地址和端口

後端口轉發您的端口指定使用你的路由器

那麼你就可以http://yourpublicip:port/

參觀如果端口80,然後訪問的頁面不具有端口住你的網站/遊戲。

+0

它沒有工作。我不需要在我的網站上安裝節點等東西嗎? –

+0

不,你沒有安裝任何東西,我已經編輯了我的答案,'iphere',放在你的私人IP地址。通過輸入'cmd'' ipconfig'來獲得它 –

相關問題