2015-12-29 174 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'来获得它 –

相关问题