(opts, cb)
| 12 | } |
| 13 | |
| 14 | async function setup(opts, cb) { |
| 15 | const certificate = await generateWebTransportCertificate( |
| 16 | [{ shortName: class="st">"CN", value: class="st">"localhost" }], |
| 17 | { |
| 18 | days: 13, class="cm">// the total length of the validity period MUST NOT exceed two weeks (https://w3c.github.io/webtransport/#custom-certificate-requirements) |
| 19 | }, |
| 20 | ); |
| 21 | |
| 22 | const engine = new Server(opts); |
| 23 | |
| 24 | const h3Server = new Http3Server({ |
| 25 | port: 0, |
| 26 | host: class="st">"0.0.0.0", |
| 27 | secret: class="st">"changeit", |
| 28 | cert: certificate.cert, |
| 29 | privKey: certificate.private, |
| 30 | }); |
| 31 | |
| 32 | (async () => { |
| 33 | try { |
| 34 | const stream = await h3Server.sessionStream(class="st">"/engine.io/"); |
| 35 | const sessionReader = stream.getReader(); |
| 36 | |
| 37 | while (true) { |
| 38 | const { done, value } = await sessionReader.read(); |
| 39 | if (done) { |
| 40 | break; |
| 41 | } |
| 42 | engine.onWebTransportSession(value); |
| 43 | } |
| 44 | } catch (ex) { |
| 45 | console.error(class="st">"Server error", ex); |
| 46 | } |
| 47 | })(); |
| 48 | |
| 49 | h3Server.startServer(); |
| 50 | |
| 51 | await h3Server.ready; |
| 52 | |
| 53 | cb({ engine, h3Server, certificate }); |
| 54 | } |
| 55 | |
| 56 | function createHttpServer(port) { |
| 57 | const httpServer = createServer(); |
no test coverage detected