我正在使用一個NodeJS服務器,我試圖使用多個socket.emit,但每次我嘗試這樣做時,我都會在'插座'。和TypeError:無法讀取undefined
的'on'屬性。有沒有辦法解決這個問題,並保持兩個socket.emits?'socket'上缺少錯誤處理程序。和typeerror:無法讀取屬性未定義
一些服務器的代碼被打破的:大量的時間只是把隨機碼後
listener.sockets.on('connection', function(socket){
//send data to 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 to youtube-dl.
['--format=18'],
// Additional options can be given for calling `child_process.execFile()`.
{ cwd: __dirname });
// Will be called when the 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 be 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 + '%'});
}
});
});
here is the image of the error
好吧,我到處都來到了這個解決方案:
listener.sockets.on('connection', function(socket){
//send data to 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 to youtube-dl.
['--format=18'],
// Additional options can be given for calling `child_process.execFile()`.
{ cwd: __dirname });
// Will be called when the 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 be 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'));
}
});
包含確切的錯誤信息 –
@ suraj99934你是什麼意思? – frenchtoaster10
包含在控制檯上打印的確切錯誤堆棧 –