Spaces:
Sleeping
Sleeping
| // Glint Research's Legally Distinct Clone — server entrypoint. | |
| // Zero config: `node server/index.js` and go. | |
| const http = require('http'); | |
| const path = require('path'); | |
| const express = require('express'); | |
| const { load } = require('./db'); | |
| const { seed } = require('./seed'); | |
| const { router } = require('./api'); | |
| const realtime = require('./realtime'); | |
| load(); | |
| seed(); | |
| const app = express(); | |
| app.use('/api', router); | |
| app.use(express.static(path.join(__dirname, '..', 'public'))); | |
| // SPA fallback for hash-less deep links | |
| app.get('*splat', (req, res) => { | |
| res.sendFile(path.join(__dirname, '..', 'public', 'index.html')); | |
| }); | |
| const server = http.createServer(app); | |
| realtime.attach(server, router); | |
| const START_PORT = Number(process.env.PORT) || 3000; | |
| server.on('listening', () => { | |
| const { port } = server.address(); | |
| console.log(''); | |
| console.log(' ✦ Glint Research\'s Legally Distinct Clone'); | |
| console.log(` ✦ running at http://localhost:${port}`); | |
| console.log(''); | |
| }); | |
| function listen(port, triesLeft) { | |
| server.once('error', (err) => { | |
| if (err.code === 'EADDRINUSE' && triesLeft > 0) { | |
| console.log(`port ${port} busy, trying ${port + 1}`); | |
| listen(port + 1, triesLeft - 1); | |
| } else { | |
| throw err; | |
| } | |
| }); | |
| server.listen(port); | |
| } | |
| listen(START_PORT, 10); | |