我开始使用 node.js 和 socket.io 并且不知道如何制作它,因此您不必在浏览器中输入“url:port”,而只需输入 url。相反,我只想输入网址,然后一切都应该出现,就像我未完成的单人游戏一样:http: //space.bonsaiheld.org/(你猜对了:我想让它成为多人游戏)。游戏不得在端口 80/443 上运行,因为这些端口专用于网络服务器。
它应该是这样的:http: //ondras.zarovi.cz/games/just-spaceships/而不是“ip/url:port”。怎么做?
应用程序.js
// Socket.IO
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs');
// Start the server on port 9000
app.listen(9000);
// Send index.html to the player
function handler (req, res) {
fs.readFile(__dirname + '/index.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading index.html');
}
res.writeHead(200);
res.end(data);
});
}
// Connection listener
io.sockets.on('connection', function (client)
{
console.log('New connection established.');
}); // Connection listener
索引.html
<html>
<head>
<meta charset="utf-8">
<title>Mehrspielerklötzchen</title>
<script src="/socket.io/socket.io.js"></script>
</head>
<body>
<canvas id="canvas" style="background: #000000;">
<script>
// Socket.IO
var socket = io.connect('http://localhost:9000');
</script>
</body>
</html>
编辑:我基本上希望游戏在端口 9000 上运行,但 index.html 可以通过像 sub.domain.com/game/ 这样的普通/无端口 URL 而不是 URL:Port 访问。
编辑 2:将问题减少到只有一个,因为我的两个问题恰好是单独的问题。
编辑3:解决!我自己想通了,这很容易:
新的极其简化的服务器代码:
var io = require('socket.io').listen(9000);
// Connection listener
io.sockets.on('connection', function (client)
{
console.log('Connection established.');
}); // Connection listener
新 index.html(可通过 file://folder/index.html 访问)
<html>
<head>
<meta charset="utf-8">
<title>Mehrspielerklötzchen</title>
<script src="http://localhost:9000/socket.io/socket.io.js"></script>
</head>
<body>
<canvas id="canvas" style="background: #000000;">
<script>
// Socket.IO
var socket = io.connect('http://localhost:9000');
</script>
</body>
</html>
感谢所有帮助过的人。我想它也适用于端口重定向。但似乎我什至不需要它。现在 Apache 一如既往地提供文件,但 socket.io 侦听端口 9000,并且 index.html(或我想要的任何文件)连接到服务器!这也意味着这个文件现在可以无处不在,甚至在另一台服务器或本地。完美的。:))