@MaksZhukov
programer

Как я могу отправить ошибку по client stream grpc nodejs?

Как я могу отправить ошибку по stream grpc nodejs?
Есть сервер и клиент. Хочу отправить на client stream ошибку и отловить её в функции on('error') на сервере.

channel.destroy(new Error("test")) выдает следующее сообщение

5dfcf3bfe059f172085906.png

client
const client = new protoDescriptor.grpc.CarService('localhost:50051', grpc.credentials.createInsecure());
let channel = client.streamCars((err,response)=>{
    console.log(err,response);
});

let obj = {
    cars: []
}

let count = 0;
let intervalId = setInterval(()=>{
    count++;
    obj.cars.push({});
    channel.write(obj);
    if (count > 3){
        clearInterval(intervalId);
        channel.end();
    }
},1000);

server
const protoDescriptor = grpc.loadPackageDefinition(packageDefinition);

let streamCars = (call,callback) => {
    call.on('data', (response) => {
        console.log(response);
    });
    call.on('end', () => {
        console.log('end server');
        callback(null, {})
    });
    
    call.on('error', (response) => {
        console.log(response);
    });
    
    call.on('status', (response) => {
        console.log(response);
    });
}

let server = new grpc.Server();

server.addService(protoDescriptor.grpc.CarService.service, {
    streamCars
});

server.bind('0.0.0.0:50051', grpc.ServerCredentials.createInsecure());
server.start();
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы