【发布时间】:2020-08-29 06:11:54
【问题描述】:
当一个节点HTTP2服务器创建一个新的推流时,请求头与响应头的目的是什么?
服务器代码:
http2Server.on('stream', (stream) => {
stream.pushStream({ ':path': '/' }, (err, pushStream, headers) => { // send request headers
pushStream.respond({ ':status': 200 }); // send response headers
pushStream.end('some pushed data');
});
stream.end('some data');
});
客户端代码:
clientHttp2Session.on('stream', (pushedStream, requestHeaders) => { // receive request headers
pushedStream.on('push', (responseHeaders) => { // receive response headers
/* Process response headers */
});
pushedStream.on('data', (chunk) => { /* handle pushed data */ });
});
这两个都必须在发送任何数据之前发送,所以看起来其中一个是多余的?
MDN 声明:
请求标头包含有关要获取的资源或请求资源的客户端的更多信息。
响应标头包含有关响应的附加信息,例如其位置或提供它的服务器。
但是,这似乎倾向于更多的客户端请求、服务器响应模型——这不适用于推送。
【问题讨论】: