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

标签 javascript angularjs node.js socket.io

我有一个继承的应用程序,它的套接字 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/

相关文章:

javascript - 将类型数组存储在 ArrayBuffer 中

javascript - 将 jQuery 和 CSS3 滚动效果从功能垂直滚动转换为所需的水平滚动的问题

javascript - Nightwatch.js 从输入中获取值并在下一步中使用它

javascript - AngularJS 范围内的 HTML 标签

mysql - Nodejs安装mysql模块出错

javascript - 无法在输入框中输入密码

python - Selenium 是否有办法像 Protractor 一样等待 AngularJS?

javascript - 加载 Controller 时未加载模块,但我不需要它们

node.js - Node REPL eval 回调

javascript - 如何在 Node/Express 中调试 EJS 模板