server.js 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import express from 'express'
  2. import { createServer } from 'http'
  3. import path from 'path'
  4. import { Socket } from 'socket.io'
  5. import { toBuffer } from 'qrcode'
  6. import fetch from 'node-fetch'
  7. function connect(conn, PORT) {
  8. let app = global.app = express()
  9. console.log(app)
  10. let server = global.server = createServer(app)
  11. // app.use(express.static(path.join(__dirname, 'views')))
  12. let _qr = 'invalid'
  13. conn.ev.on('connection.update', function appQR({ qr }) {
  14. if (qr) _qr = qr
  15. })
  16. app.use(async (req, res) => {
  17. res.setHeader('content-type', 'image/png')
  18. res.end(await toBuffer(_qr))
  19. })
  20. // let io = new Socket(server)
  21. // io.on('connection', socket => {
  22. // let { unpipeEmit } = pipeEmit(conn, socket, 'conn-')
  23. // socket.on('disconnect', unpipeEmit)
  24. // })
  25. server.listen(PORT, () => {
  26. console.log('App listened on port', PORT)
  27. if (opts['keepalive']) keepAlive()
  28. })
  29. }
  30. function pipeEmit(event, event2, prefix = '') {
  31. let old = event.emit
  32. event.emit = function (event, ...args) {
  33. old.emit(event, ...args)
  34. event2.emit(prefix + event, ...args)
  35. }
  36. return {
  37. unpipeEmit() {
  38. event.emit = old
  39. }
  40. }
  41. }
  42. function keepAlive() {
  43. const url = `https://${process.env.REPL_SLUG}.${process.env.REPL_OWNER}.repl.co`
  44. if (/(\/\/|\.)undefined\./.test(url)) return
  45. setInterval(() => {
  46. fetch(url).catch(console.error)
  47. }, 5 * 1000 * 60)
  48. }
  49. export default connect