我想使用node.js和socket.io创建一个多人HTML5半实时游戏。帧速率为 3 fps。玩家使用方向键来移动。所有游戏对象沿直线移动(玩家水平或垂直移动)。玩家按向上/向下翻页可以加快/减慢速度。这是我的第一个动画 HTML5 游戏,也是我的第一个重型 JavaScript 项目。
我学习了名为“使用 WebSockets 和 Node.js 创建实时多人游戏”的教程(单击 here )。本教程通过箭头键移动为每个玩家显示一个黑色方 block 。不幸的是,它只能在一台计算机上运行(但可以在多个浏览器选项卡上运行)。您必须将浏览器指向 public/index.html 文件。我想修改它,以便我可以从 LAN 上的另一台计算机加入游戏,方法是将浏览器指向 192.168.1.4:8000。最终,我希望我的兄弟能够访问 myquadrawebsite.com 加入。我知道如何为 apache 进行端口转发,但不知道如何为 node.js 进行端口转发。以下是本教程中的 3 个精简的高级代码片段:
// public/index.html
<script src="http://localhost:8000/socket.io/socket.io.js"></script>
<script src="js/game.js"></script>
<script> // Initialise the game
init();
animate();
</script>
// game.js
var io = require("socket.io");
var socket, players;
function init() {
players = [];
socket = io.listen(8000);
setEventHandlers();
};
var setEventHandlers = function() {
socket.sockets.on("connection", onSocketConnection);
};
function onSocketConnection(client) {
util.log("New player has connected: "+client.id);
client.on("new player", onNewPlayer);
};
// public/js/game.js
var remotePlayers, localPlayer, socket;
function init() {
localPlayer = new Player(startX, startY);
socket = io.connect("http://localhost", {port: 8000, transports: ["websocket"]});
remotePlayers = [];
setEventHandlers();
};
var setEventHandlers = function() {
socket.on("connect", onSocketConnected);
socket.on("new player", onNewPlayer);
};
我到处搜索了有关node.js和socket.io的其他教程,但到目前为止没有一个对我有帮助。 (我的长期目标是创建一个 HTML5 游戏开发框架。)如果有人能给我指出正确的方向,我将不胜感激。谢谢。
请您参考如下方法:
Unfortunately it only works on one computer (but multiple browser tabs)
这强烈表明您正在一台计算机上运行服务器,并且无法从其他计算机客户端(网络浏览器)访问它。
您应该确保您在客户端中使用的代码使用的 URL 可供尝试访问游戏的任何人(任何客户端)访问,例如
socket = io.connect("http://localhost", {port: 8000, transports: ["websocket"]});
除了运行服务器的计算机上的人之外,绝对不会为任何人工作。
如果您将 URL 更新为 192.168.1.4:8000
并且其他人可以访问该地址,那么它的工作可能性就会大得多。