gpt4 book ai didi

javascript - ".send is not a function",试图让玩家 1 知道玩家 2 已连接。 (NodeJS、websockets、JavaScript)

转载 作者:行者123 更新时间:2023-11-30 19:57:23 25 4
gpt4 key购买 nike

所以我一整天都在努力让它工作。我正在使用 JS 和 NodeJS 创建一个简单的基于 2 人网络的游戏,我想在这个项目中使用 websockets。

到目前为止,我已经让两个玩家都连接到 socket ,第一个玩家将等待第二个玩家连接。

当玩家 2 连接时,会向玩家 2 的客户端发送一条消息,说他可以开始,然后他发回一条消息说他正在开始,因此“消息 == “已开始”” .

然后当玩家 2 的消息到达服务器时,我希望服务器向玩家 1 发送消息,唯一的问题是“game.playerOne.send”不起作用,日志显示这不是一个函数。

明确一点:因为执行了 game.addPlayer(con.id),game.playerOne 包含玩家一的连接 ID。

这是我正在谈论的代码:

const wss = new websocket.Server({ server });
var websockets = {};

var game = new Game(gameStats.started++);
var connectionID = 0;

wss.on("connection", function(ws) {

let con = ws;
con.id = connectionID++;
console.log(con.id + " has connected");
let player = game.addPlayer(con.id);
websockets[con.id] = game;

console.log("Player %s placed in game %s", ws.id, game.id);

if (game.twoConnected()) {
setTimeout(function() {
ws.send("Player 1 is ready!");
}, 1000);
game = new Game(gameStats.started++);
}

con.on("message", function incoming(message) {
let game = websockets[con.id];

let isPlayerOne = (game.playerOne === con);

if (isPlayerOne) {

} else {
if (message == "Started") {
game.playerOne.send(message);
}
}
});
});

我真的很想知道如何将消息发送到其他 websocket(玩家 1 的套接字)以及为什么“game.playerOne.send”不是有效函数。

提前致谢!

最佳答案

You are adding ID's of the websocket objects to your player array, not the websocket itself. Therefore you are calling 'send' on an integer, not a websocket object.

引用 self 的评论。


我无法对此进行测试,但我更改了以 // <-- 为后缀的行.如果这不是您想要的解决方案,我建议您编辑您的问题以包含负责存储和检索玩家和所有游戏的功能,以便我们可以更好地了解存储对象的方式和内容。

在旁注中,我建议使用 console.log ( docs ) 例如,您的 game.playerOne .这样您就可以在调试控制台中看到该对象的所有属性。

const wss = new websocket.Server({ server });
var websockets = {};

var game = new Game(gameStats.started++);
var connectionID = 0;

wss.on("connection", function(ws) {
let con = ws;
con.id = connectionID++;
console.log(con.id + " has connected");
let player = game.addPlayer(con); // <-- this
websockets[con.id] = game;

console.log("Player %s placed in game %s", ws.id, game.id);

if (game.twoConnected()) {
setTimeout(function() {
ws.send("Player 1 is ready!");
}, 1000);
game = new Game(gameStats.started++);
}

con.on("message", function incoming(message) {
let game = websockets[con.id];

let isPlayerOne = (game.playerOne === con);

if (isPlayerOne) {

} else {
if (message == "Started") {
game.playerOne.send(message);
}
}
});
});

关于javascript - ".send is not a function",试图让玩家 1 知道玩家 2 已连接。 (NodeJS、websockets、JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53816990/

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