2017-02-22 13 views
0

Простите меня, я изучал узел и js за последние несколько дней, пришел из C#/единства, и все немного отличается от того, что я знаю. Я делаю совместную драм-машину, у меня 90% работы: http://ec2-54-194-29-66.eu-west-1.compute.amazonaws.com:9000/вопрос с отправкой данных о событиях с щелчком по socket.io

У меня есть сервер узла, который работает с нажатиями клавиш и координатами мыши, однако у меня есть проблема с отображением щелчка мыши событие, я регистрирую клик в консоли других подключений и сервера, но, похоже, я не совсем понимаю, правильно ли отправил содержимое событий. Я не могу написать var data = list: e.classList и прочитать data.list, чтобы увидеть то же самое?

Вот код, который я пытался получить работу, но я получаю не могу прочитать сообщение об ошибке свойства:

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); 
    } 

Я был первоначально пытается просто испускать е или e.target вместо этой структуры данных, но похоже, не работает. Кто-нибудь получил какие-то идеи о том, что мне не хватает? (кроме мозга)

ответ

1

Объект, который вы получили (data), не имеет методов, он передается как JSON и затем преобразуется в объект, поэтому вы не можете использовать любые методы, такие как data.target.play();.

Если вам нужны какие-либо методы, вы должны добавить их, когда объект получен.

+0

ok Я думаю, что у вас есть, это просто отправка куча текста и никаких методов, что делать. поэтому я вместо этого: btn [e.target.id] .classList.add ('active'); btn [e.target.id] .play(); и мои кнопки устанавливаются: для (вар я = 0; я Richop

+0

Извините, я не углубился в остальную часть вашего кода, в любом случае вам нужно передать данные, чтобы понять, что играть на другой стороне клиента, например, идентификатор кнопок или звуков и т. Д. Я думаю, что нет петель возможны, если вы выходите из 'clickPlayOn' и получаете его в' newMouseOn' –

+0

Я пробовал это, отправляя идентификатор кнопки и в части ClickPlayOn, я хочу просто добавить индекс кнопки что-то вроде 'btn [i] .addEventListener ('mousedown', clickPlayOn (index: i));' Могу ли я добавить индекс внутри этой функции (e), как правило, это как 'clickPlayOn()' выше, но функция имеет clickPlayOn (e), я считаю, что это событие, могу ли я на него наброситься? что такое синтаксис, я получаю что-то о недостающем) после списка аргументов, когда вы экспериментируете с бит выше. Спасибо за вашу помощь, очень любезно с вашей стороны. – Richop

Смежные вопросы