const http = require('http')

let drop_goal = 5_000
let dropped = 0

let query = {
  method: 'POST',
  host: '127.0.0.1',
  port: 8080,
  path: '/events',
}

setInterval(() => {
  if (dropped < drop_goal) {
    let request = http
      .request(query, (response) => {
        response.on('data', (data) => {
          if (data.includes('data: connected\n')) {
            // drop connection after welcome message
            dropped += 1
            request.abort()
          }
        })
      })
      .on('error', () => {})
      .end()
  }
}, 0)

setInterval(() => {
  http.request({ ...query, path: '/' }, () => print_status(true))
    .setTimeout(100, () => print_status(false))
    .on('error', () => {})
}, 20)

function print_status(accepting_connections) {
  process.stdout.write('\r\x1b[K')
  process.stdout.write(
    `Connections dropped: ${dropped}, accepting connections: ${accepting_connections}`
  )
}