gpt4 book ai didi

javascript - socket.io 基本发出和监听器失败

转载 作者:行者123 更新时间:2023-11-28 05:14:22 25 4
gpt4 key购买 nike

我有一个继承的应用程序,它的套接字 IO 已经在处理许多事件。这是一种在棋盘上移动棋子并用符号记录移动的游戏。我正在构建符号。

我尝试为符号创建一个新的发射器/监听器对,但失败了。

我将发射器放在一个文件中,作为函数的一部分,该函数已经使用了我需要传递的两个对象(在我需要传递它们的时间/上下文)...

function writeMoveLog(game,moveInfo){
socket.emit('notation', {game: game, moveInfo: moveInfo});

(...rest of the function which works ok)

我的监听器就是主 js 文件中的这个......

    socket.on('notation', function(gameState){
writeMoveLog(gameState.game, gameState.moveInfo);
});

基本上,我试图将这两个对象扔到套接字的另一个客户端,并让它也触发该函数,更新符号。两个客户端使用相同的文件。

我使用与预先存在的“移动”事件相同的基本模式,该事件工作正常 - 由发射传递的未命名对象,然后在 on/listener 中命名和使用 - 这些都在相同的主 js 文件。

    socket.emit('move', {
mInfo: result.mInfo,
mResult: result,
senString: gameGen.saveToSEN(game),
mGame: {contents : game}, //I added this, it works
});

socket.on('move', function (move) {
game = gameGen.loadFromSEN(move.senString);
gui.draw(game.board);
etc etc

我在调试器中没有得到任何东西,没有任何“符号”事件,但我可以轻松地看到来回的“移动”事件内容。我尝试过使用该事件,但它没有我在该上下文中需要的对象(完全移动信息,并且游戏似乎缺少我需要的细节)。

我在主开发环境中使用 Chrome 开发工具,在其他连接的客户端中使用 Firefox。

什么给了?我需要在其他地方以某种方式注册该事件吗?我看不到这是通过“移动”事件完成的,我认为我所需要做的就是进行调用并配置监听器,并且无论哪个客户端进行移动都将成为“符号”事件的服务器.

顺便说一句,当我调试 socket.io 内容时,Chrome Dev 断点似乎没有按预期工作 - 这正常吗?为什么我不能在 socket.emit 中设置断点,以便我可以研究该上下文中可用的对象,就像我可以使用其他函数一样?

最佳答案

代码没有任何问题,请确保您在监听的前端包含了 socket.js 脚本,并检查您的事件是否没有冲突。

关于javascript - socket.io 基本发出和监听器失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41104434/

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