我有一个我继承的应用程序,它已经在许多事件上运行了套接字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);
});
基本上我正在尝试将这两个对象抛出到套接字的另一个客户端,并让它触发函数,更新表示法。两个客户端都使用相同的文件。
我使用与预先存在的'move'事件相同的基本模式,该事件工作正常 - 由emit传递的未命名对象,然后在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
我在调试器中没有得到任何东西,没有任何'notation'事件,但我可以很容易地看到'move'事件内容来回传递。我已经尝试过使用那个事件了,但它没有我需要的对象(完全是moveInfo,游戏似乎缺少我需要的细节)。
我正在使用Chrome Dev工具用于我的主要开发环境,而Firefox用于其他连接的客户端。
是什么给出的?我是否需要以某种方式在其他地方注册该活动?我无法看到已经通过'move'事件完成了,我认为我需要做的就是进行调用并配置监听器,无论哪个客户端进行移动都将成为'符号'事件的服务器
另外,当我调试socket.io时,Chrome Dev断点似乎没有按预期工作 - 这是正常的吗?为什么我不能在socket.emit中创建一个断点,所以我可以研究那个上下文中可用的对象,就像我可以用其他函数一样?
答案 0 :(得分:0)
代码没有任何问题,请确保您在前端听到了socket.js脚本,并检查您的事件是否发生冲突。