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.

Artaigilean co-cheangailte