gpt4 book ai didi

javascript - socket.io:如何放弃 url:port 方案?

转载 作者:太空宇宙 更新时间:2023-11-04 01:11:52 25 4
gpt4 key购买 nike

我开始使用node.js和socket.io,但不知道如何制作它,所以你不必在浏览器中输入“url:port”,而只需输入url。相反,我只想输入网址,然后一切都会出现,就像我未完成的单人游戏: http://space.bonsaiheld.org/ (你猜对了:我想让它成为多人游戏)。游戏不得在端口 80/443 上运行,因为这些端口专用于网络服务器。

应该是这样的:http://ondras.zarovi.cz/games/just-spaceships/而不是“ip/url:端口”。如何做到这一点?

app.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

index.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 上运行,但可以通过普通/无端口 URL(如 sub.domain.com/game/而不是 URL:Port)访问 index.html。

编辑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 (或我想要的任何文件)连接到服务器!这也意味着该文件现在可以位于任何地方,甚至位于另一台服务器或本地。完美的。 :))

最佳答案

使用默认的 HTTP/HTTPS 端口 80/443(这也是 WS/WSS 的默认端口)。

当然可以redirect它们连接到其他“内部”端口。

关于javascript - socket.io:如何放弃 url:port 方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16311414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com