簡體   English   中英

socket.io基本發出和偵聽器失敗

[英]socket.io basic emit and listener failing

我有一個我繼承的應用程序,它已經在許多事件上運行了套接字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 

我在調試器中沒有得到任何東西,沒有任何“符號”事件,但我可以很容易地看到'move'事件內容來回傳遞。 我已經嘗試過使用該事件,但它沒有我在該上下文中需要的對象(完全是moveInfo,游戲似乎缺少我需要的細節)。

我正在為我的主要開發環境使用Chrome開發工具,為其他連接的客戶端使用Firefox。

是什么賦予了? 我是否需要以某種方式在其他地方注冊該活動? 我無法看到已經通過'move'事件完成了,我認為我需要做的就是進行調用並配置監聽器,無論哪個客戶端進行移動都將成為'符號'事件的服務器。

另外,當我調試socket.io時,Chrome Dev斷點似乎沒有按預期工作 - 這是正常的嗎? 為什么我不能在socket.emit中創建一個斷點,所以我可以調查那個上下文中可用的對象,就像我可以用其他函數一樣?

代碼沒有任何問題,確保您在前端包含了socket.js腳本並且還檢查了您的事件是否發生沖突。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM