2017-02-22 9 views
0

私は、ここ数日、ノードとjsを学んできました.C#/統一から来て、すべてが私が知っているものとは少し異なります。私は共同のドラムマシンを作っています。私は90%の作業をしています:http://ec2-54-194-29-66.eu-west-1.compute.amazonaws.com:9000/Click with socket.ioでイベントデータを送信する際に問題が発生する

私は、キーを押して送信してマウスを操作してノードサーバーを動作させていますが、イベント、私は他の接続やサーバーのコンソールにクリックを登録していますが、イベントの内容を適切に送信することを理解していないようです。私はvar data = list:e.classListとdata.listを読んで同じことを見ることはできないのですか?ここで

は、私が働いて取得しようとしてきたコードですが、私は、プロパティのエラーを読み取ることができません取得する:私はもともとちょうどeまたはe.targetの代わりに、そのデータ構造体を放出しようとしていた

function newMouseOn(data) 
    { 
     console.log("Is this working Click On?" + data.target); 
     data.list.add('active'); 
     //clickPlayOn(data); 
     data.target.play(); 
    } 

    function newMouseOff(data) 
    { 
     console.log("Is this working ClickOff?" + data.target); 
     //clickPlayOff(data); 
     data.list.remove('active'); 
    } 

socket.on('mouseOn', newMouseOn); 
socket.on('mouseOff', newMouseOff); 


    function clickPlayOn(e) 
    { 
     var data = { 
     id: e.target.id, 
     timeStamp: e.timeStamp, 
     type: e.type, 
     target: e.target, 
     list: e.classList 
     } 
     socket.emit('mouseOn', data); 
     e.target.classList.add('active'); 
     e.target.play(); 
    } 

    function clickPlayOff(e) 
    { 
     var data = 
     { 
     id: e.target.id, 
     timeStamp: e.timeStamp, 
     type: e.type, 
     target: e.target, 
     list: e.classList 
     } 
     socket.emit('mouseOff', data); 
     e.target.classList.remove('active'); 
    } 


server side: 

    socket.on('mouseOn', MouseClick); 
    socket.on('mouseOff', MouseClicked); 


function MouseClick(data) 
    { 
    socket.broadcast.emit('mouseOn', data); 
    console.log(data); 
    } 

    function MouseClicked(data) 
    { 
    socket.broadcast.emit('mouseOff', data); 
    console.log(data); 
    } 

、それ動作していないようでした。誰かが私が逃しているものについて何か考えを持っていますか?

答えて

1

受け取ったオブジェクト(data)にはメソッドがありません。これはJSONとして転送され、オブジェクトに変換されるため、data.target.play();のようなメソッドを呼び出すことはできません。

オブジェクトを受け取ったときにメソッドを追加する必要がある場合は、そのメソッドを追加する必要があります。

+0

ok私はあなたを持っていると思う、それはちょうどテキストの束と何をするのかの方法を送信しています。だから私は代わりに行く:btn [e.target.id] .classList.add( 'アクティブ'); btn [e.target.id] .play(); と私のボタンが設定されています: for(var i = 0; i Richop

+0

申し訳ありませんが、私はコードの残りの部分に深くは進んでいませんでしたが、とにかく 、ボタンのIDやサウンドなど、他のクライアント側で再生する内容を理解するためにデータを転送する必要があります。 あなたは 'clickPlayOn'から発光し、' newMouseOn' –

+0

でそれを受信して​​いる場合、私はClickPlayOn、部分的にだけでなく上のボタンIDを送信し、私はちょうどのようなボタン何かのインデックスを追加したい、ということしようとしてきた可能性あり 上記の(e)イベント関数の中にインデックスを追加することはできますが、通常は上記の 'clickPlayOn()'と似ていますが、この関数には次のようなものがあります。 clickPlayOn(e)、私はそれを取るイベントです、私はそれに物事をチャックできますか?構文は何ですか、欠落について何かを得ています)上記のビットを試してみると、引数リストの後になります。あなたの助けをありがとう、本当にあなたの種類。 – Richop

関連する問題