strong-tie/inbound-calls
0
1'use strict'2 3const { test, skip } = require('tap')4const Fastify = require('..')5const { connect } = require('node:net')6const { once } = require('node:events')7const dns = require('node:dns').promises8 9async function setup () {10 const localAddresses = await dns.lookup('localhost', { all: true })11 if (localAddresses.length === 1) {12 skip('requires both IPv4 and IPv6')13 return14 }15 16 test('upgrade to both servers', async t => {17 t.plan(2)18 const app = Fastify()19 app.server.on('upgrade', (req, socket, head) => {20 t.pass(`upgrade event ${JSON.stringify(socket.address())}`)21 socket.end()22 })23 app.get('/', (req, res) => {24 })25 await app.listen()26 t.teardown(app.close.bind(app))27 28 {29 const client = connect(app.server.address().port, '127.0.0.1')30 client.write('GET / HTTP/1.1\r\n')31 client.write('Upgrade: websocket\r\n')32 client.write('Connection: Upgrade\r\n')33 client.write('Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==\r\n')34 client.write('Sec-WebSocket-Protocol: com.xxx.service.v1\r\n')35 client.write('Sec-WebSocket-Version: 13\r\n\r\n')36 client.write('\r\n\r\n')37 await once(client, 'close')38 }39 40 {41 const client = connect(app.server.address().port, '::1')42 client.write('GET / HTTP/1.1\r\n')43 client.write('Upgrade: websocket\r\n')44 client.write('Connection: Upgrade\r\n')45 client.write('Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==\r\n')46 client.write('Sec-WebSocket-Protocol: com.xxx.service.v1\r\n')47 client.write('Sec-WebSocket-Version: 13\r\n\r\n')48 await once(client, 'close')49 }50 })51}52 53setup()54 