Node js在TCP.onStreamRead读取ECONNRESET(internal/stream_base_commo



我使用Websocket创建了聊天应用程序。在这个程序中,我将图像上传到room。当我上传图像时,我会出现以下错误,它会为所有客户端Room创建新的连接。来自以下函数的错误。

connection.on("error",function(err){
console.log('error',err.code)
console.log(err)
})

以下日志消息

server listening to port 3001
new user connected hi                   #user 1 (room1) he is going to upload image
new user connected hi                    #user 2(room1)
error ECONNRESET
Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:209:20) {
errno: -4077,
code: 'ECONNRESET',
syscall: 'read'
}
user disconnected Socket Error: read ECONNRESET               # user1(room1) disconnected
error ECONNRESET
Error: read ECONNRESET
at TCP.onStreamRead (internal/stream_base_commons.js:209:20) {
errno: -4077,
code: 'ECONNRESET',
syscall: 'read'
}
user disconnected Socket Error: read ECONNRESET           #user2(room1) disconnected
new user connected hi                               #user 1 (room1)
new user connected hi                                #user 2(room1)

两个客户端正在侦听端口3000:(反应(

客户端代码:App.js

constructor(){
super()
this.connection =  null;
this.appName = "Chat-App";
this.SERVER = "http://localhost:3001/";
}


componentDidMount(){
this.connection = new WebSocket('ws://localhost:3001');
}


handleImageUpload = async(event,photo)=>{

event.preventDefault()
let formData = new FormData();
formData.append("photo", photo);
fetch(this.SERVER+'uploads', {method: "POST", body: formData})
.then((response)=>{
console.log('response from server',response)
this.connection.send(this.createJsonString("image_upload",photo.name,this.state.activeRoom));
})

服务器端

const UPLOAD_LOC = './../client/public/'
var storage = multer.diskStorage({
destination: function(req,file,callback) {
callback(null, UPLOAD_LOC);
},
filename: function(req,file,callback) {
callback(null,file.originalname);
}
})
var upload = multer({ storage: storage })

app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:3000');
res.setHeader('Access-Control-Allow-Methods', 'POST');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
})
var server = require('http').createServer(app);

app.post('/uploads',upload.single("photo"),function(req,res){
res.send({error:'false',message:'image uploaded'});

})

服务器端事件处理程序

wsServer.on('request', function(request) {
console.log('new user connected','hi')
var connection = request.accept(null, request.origin);    
connection.on('message', function(message) {        
const json = JSON.parse(message.utf8Data)
let userId = json.userId;
let body = json.body;

switch(json.meta){ 
case 'image_upload':
fs.readFile(UPLOAD_LOC+body,function(err,buf){ //here body contains file name
if(!err){
userList = getRoomUserList(json.roomName);//get the all the user from the room
for(i = 0;i<userList.length;i++){
let user = userList[i];
getSocketId(user).send(createJsonString('image_upload',user,buf.toString('base64'),json.roomName))
}

}else{
console.log('is this error',err)
}
})
break;
}

请帮帮我提前感谢

我会回答我自己的问题。在这里我所做的是我上传的图片反应默认文件夹public这就是问题所在。

我更改了上传目录,现在它工作正常。

最新更新