gpt4 book ai didi

javascript - 'socket' 上缺少错误处理程序。和类型错误 : cannot read property 'on' of undefined

转载 作者:行者123 更新时间:2023-11-28 05:43:53 26 4
gpt4 key购买 nike

我正在一台 NodeJS 服务器上工作,我试图使用多个 socket.emit,但每次我尝试这样做时,我都会在“socket”上收到 Missing 错误处理程序。和 TypeError: 无法读取 undefined 的属性“on”。有什么办法可以解决这个问题并保留两个 socket.emits 吗?

服务器的一些代码已损坏:

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



});

最佳答案

我认为问题是“套接字未定义”。尝试如下所示。

listener.sockets.on('connection', function(socket){
socket.on('client_data', function(data){ ... }); // here socket is define
...
//send data to client
setInterval(function(){
socket.emit('date', {'date': new Date()});
}, 1000);
});

关于javascript - 'socket' 上缺少错误处理程序。和类型错误 : cannot read property 'on' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38705404/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com