Node.js HTTP/2 tro HTTP CONNECT le createConnection
Crìochnaich CONNECT, dèan TLS an t-seallaidh a cho-rèiteach le h2, is cleachd createConnection gus http2.connect a chumail air an t-sruth sin.
Faodaidh progsaidh HTTP/1.1 frèamaichean HTTP/2 an t-seallaidh a ghiùlan am broinn CONNECT. Chan fheum a' phrogsaidh na frèamaichean a-staigh sin a chur an gnìomh, ach feumaidh an neach-cleachdaidh na h-eadar-ghabhail phròtacail a dhèanamh ann an òrdugh.
An dèidh freagairt CONNECT slàn a dhearbhadh agus tunnelSocket a chumail, cuir TLS an t-seallaidh ris agus thoir an t-sruth stèidhichte do HTTP/2:
import tls from 'node:tls';
import http2 from 'node:http2';
const secureSocket = tls.connect({
socket: tunnelSocket,
servername: 'api.example',
ALPNProtocols: ['h2'],
});
secureSocket.once('error', failRoute);
secureSocket.once('secureConnect', () => {
if (secureSocket.alpnProtocol !== 'h2') {
secureSocket.destroy();
failRoute(new Error('Destination did not negotiate h2'));
return;
}
const session = http2.connect('https://api.example', {
createConnection: () => secureSocket,
});
session.on('error', failRoute);
useSession(session);
});Bheir createConnection air ais an t-sruth TLS a tha a' phrogsaidh a' giùlan mu thràth an àite socket dìreach eile fhosgladh. Bheir servername an t-seallaidh SNI agus dearbh-aithne an teisteanais, leis an dearbhadh air a chur air. Diùltaidh sgrùdadh ALPN do cheann-uidhe nach do cho-rèitich h2.
Feumaidh failRoute an t-slighe a ghlanadh; is le useSession na h-iarrtasan agus dùnadh an t-seisein. Cuir crìochan-ùine ceangail is obracha timcheall na pìos seo.
Tha cuimseachadh CONNECT host:port, dearbhadh a' phrogsaidh, làimhseachadh diùltadh agus na beartan a tha air am bufadh an dèidh nan ceann-sgrìobhadh fhathast aig a' cheangal a-muigh. Crìochnaich iad sin mus toir thu an socket do TLS; tòisichidh ro-ràdh HTTP/2 a thèid a chur gu dìreach gu èisdear progsaidh HTTP/1.1 air an ìre cheàrr.