Как отправить полезную нагрузку после stream.end () в nodejs - PullRequest
0 голосов
/ 07 января 2020

У меня есть клиент, который использует дуплексный поток для отправки полезной нагрузки (как запрос HTTP2 POST) на сервер. После stream.end () сервер отвечает обратно. Теперь, когда я не закрыл поток, я хочу использовать этот поток для отправки другой полезной нагрузки (как запрос POST http2) на сервер, скажем, через минуту.

Q1) Как сохранить запись в свой поток после stream.end (). (Я знаю, что могу создавать новый поток каждый раз ... но это будет неэффективно, и, поскольку я работаю над сетью, я хочу, чтобы этот поток оставался открытым для отправки полезной нагрузки, как только он станет доступен.

Q2) Если мы не можем использовать поток после stream.end (), какова разница между stream.end () и stream.close () (да, я прочитал документацию, что close изящно закрывает поток .. но я не вижу никакой практической причины ... я действительно запутался здесь.)

вот мой код клиента:

const h2=require('http2');
const packet=require('./requestPacket.json');
const client=h2.connect('http://localhost:3000');
client.on('error', (err)=>{throw err});
const req=client.request({
    ':path': "/nsmf-pdusession/v1/sm-contexts",
    ':method': 'POST',
    'content-type': 'application/json'
})
req.setEncoding('utf8');
req.on('error', (err)=>{throw err});

req.end(JSON.stringify(packet));            //sending request

req.on('response', (headers)=>{
    console.log('response received:')
    
    let data=''
    req.on('data', (buffer)=>{data+=buffer})
    req.on('end', ()=>{
        console.log('data received')        //receiving response
    })

//now I want to send another request  how to do it? help !

});

Заранее спасибо!

...