Javascript socket.io基本发出和侦听器失败

Javascript socket.io基本发出和侦听器失败,javascript,angularjs,node.js,socket.io,Javascript,Angularjs,Node.js,Socket.io,我继承了一个应用程序,它的socket IO已经在许多事件上工作。这是一款在棋盘上移动棋子并用符号记录移动的游戏。我正在建立符号 我试图为符号创建一个新的发射器/侦听器对,但失败了 我将发射器放在一个文件中,作为一个函数的一部分,该函数已经使用了我需要传递的两个对象(在我需要传递它们的时间/上下文中) 我的监听器就是这个在主js文件中 socket.on('notation', function(gameState){ writeMoveLog(gameState.gam

我继承了一个应用程序,它的socket IO已经在许多事件上工作。这是一款在棋盘上移动棋子并用符号记录移动的游戏。我正在建立符号

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

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

我的监听器就是这个在主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开发工具,另一个连接的客户端使用Firefox

有什么好处?我需要在其他地方注册活动吗?我看不出“move”事件已经完成了,我想我所需要做的就是调用并配置侦听器,无论哪个客户端进行移动,都将是“notation”事件的服务器


另一方面,当我调试socket.io的东西时,Chrome-Dev断点似乎没有按预期工作-这正常吗?为什么我不能在socket.emit中创建断点,以便调查该上下文中可用的对象,就像我可以处理其他函数一样?

代码没有问题确保在前端侦听时包含socket.js脚本,并检查事件是否冲突。

代码没有问题确保在前端侦听时包含socket.js脚本,并检查事件是否冲突。

代码没有问题确保在前端侦听时包含socket.js脚本事件不冲突。

感谢您的快速回复-您能详细说明不“冲突”的事件吗?如果同一事件有两个emit语句,或者有两个侦听器,会发生什么情况?是否必须是一对一,即每个页面/应用程序只有一个emit语句和一个on语句?它们基本上是一个单页应用程序,使用gulp连接生成分发文件,然后由html页面加载。还有一些棱角分明的东西在起作用。还有一个想法-当更改代码中的socket.io服务器和客户端事件时,我是否需要重新启动节点以查看更改?很抱歉延迟回复,冲突意味着事件重复我认为这不是问题。我已经在这里使用nodejs、socket.io实现了示例短脚本。也许这能帮到你。好吧,这一切对我来说都是有意义的,我似乎没有错过什么。我在我的应用程序中尝试了这一点-在与现有工作socket.emit('move'等)相同的位置,我复制了它,并将其从socket.emit('move',…重命名为socket.emit('notation'。我也复制了socket.on并注释掉了所有的函数调用。保存、重建dist文件、重新启动浏览器、重新登录、新游戏和游戏-我仍然只看到move事件激发,但没有看到notation事件,尽管它们除了事件名称之外完全相同…WTF?感谢您的快速回复-您能详细说明一个吗关于不“碰撞”的事件?如果同一事件有两个emit语句,或者有两个侦听器,会发生什么情况?是否必须是一对一,即每页/应用程序只有一个emit语句和一个on语句?它们基本上是一个单页应用程序-使用gulp连接生成分发文件,然后由html页面加载。还有一些uff在起作用。另一个想法-当更改代码中的socket.io服务器和客户端事件时,我是否需要重新启动节点以查看更改?很抱歉,延迟回复,冲突意味着事件复制我认为这不是问题。我已经使用nodejs实现了示例短脚本,这里是socket.io。这可能会对您有所帮助。好的,那就是所有这些对我来说都是有意义的,我似乎没有错过任何东西。我在我的应用程序中尝试了这一点-在与现有工作套接字相同的位置。emit('move'等)我复制了它,并简单地将它从socket.emit('move',…重命名为socket.emit(‘notation’。我也复制了socket.on并注释掉了所有的函数调用。保存、重建dist文件、重新启动浏览器、重新登录、新游戏和游戏-我仍然只看到move事件激发,但没有看到notation事件,即使它们除了事件名称之外完全相同……WTF?
    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