javascript - Missing error handler on 'socket'. and typeerror: cannot read property 'on' of undefined -
i'm working on nodejs server , i'm trying use more 1 socket.emit every time try missing error handler on 'socket'. , typeerror: cannot read property 'on' of undefined
. there way fix , keep both of socket.emits?
some of code server broken:
listener.sockets.on('connection', function(socket){ //send data client setinterval(function(){ socket.emit('date', {'date': new date()}); }, 1000); var size = 0; //recieve client data socket.on('client_data', function(data){ socket.emit('returnvar', {'returnvar': data.letter}); socket.broadcast.emit('returnvar', {'returnvar': data.letter}); process.stdout.write(data.letter); var res1 = data.letter.split("",13); if(res1 == "h,t,t,p,s,:,/,/,y,o,u,t,u" || res1 == "h,t,t,p,s,:,/,/,w,w,w,.,y" ){ process.stdout.write("googogoogogogogoogogoogogogogoogogo"); var video = youtubedl(data.letter, // optional arguments passed youtube-dl. ['--format=18'], // additional options can given calling `child_process.execfile()`. { cwd: __dirname }); // called when download starts. video.on('info', function(info) { console.log('download started'); console.log('filename: ' + info._filename); console.log('size: ' + info.size); size = info.size; }); video.pipe(fs.createwritestream('video.mp4')); } var pos = 0; video.on('data', function data(chunk) { 'use strict'; pos += chunk.length; // `size` should not 0 here. if (size) { var percent = (pos / size * 100).tofixed(2); process.stdout.cursorto(0); process.stdout.clearline(1); process.stdout.write(percent + '%'); socket.emit('returnvar1', {'returnvar1': percent + '%'}); socket.broadcast.emit('returnvar1', {'returnvar1': percent + '%'}); } }); });
ok after lots of time putting random code everywhere came solution:
listener.sockets.on('connection', function(socket){ //send data client setinterval(function(){ socket.emit('date', {'date': new date()}); }, 1000); var size = 0; //recieve client data socket.on('client_data', function(data){ socket.emit('returnvar', {'returnvar': data.letter}); socket.broadcast.emit('returnvar', {'returnvar': data.letter}); process.stdout.write(data.letter); var res1 = data.letter.split("",13); if(res1 == "h,t,t,p,s,:,/,/,y,o,u,t,u" || res1 == "h,t,t,p,s,:,/,/,w,w,w,.,y" ){ process.stdout.write("googogoogogogogoogogoogogogogoogogo"); var video = youtubedl(data.letter, // optional arguments passed youtube-dl. ['--format=18'], // additional options can given calling `child_process.execfile()`. { cwd: __dirname }); // called when download starts. video.on('info', function(info) { console.log('download started'); console.log('filename: ' + info._filename); console.log('size: ' + info.size); size = info.size; }); var pos = 0; video.on('data', function data(chunk) { 'use strict'; pos += chunk.length; // `size` should not 0 here. if (size) { var percent = (pos / size * 100).tofixed(2); process.stdout.cursorto(0); process.stdout.clearline(1); process.stdout.write(percent + '%'); socket.emit('returnvar1', {'returnvar1': percent + '%'}); socket.broadcast.emit('returnvar1', {'returnvar1': percent + '%'}); } }); video.pipe(fs.createwritestream('video.mp4')); } });
i think problem "socket not define". try below.
listener.sockets.on('connection', function(socket){ socket.on('client_data', function(data){ ... }); // here socket define ... //send data client setinterval(function(){ socket.emit('date', {'date': new date()}); }, 1000); });
Comments
Post a Comment