forked from surmon-china/surmon.me
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.js
executable file
·70 lines (57 loc) · 1.63 KB
/
server.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
/**
* @file App 入口 / Commonjs module
* @module server
* @author Surmon <https://github.com/surmon-china>
*/
// Modules
const http = require('http')
const consola = require('consola')
const express = require('express')
const socketio = require('socket.io')
const { Nuxt, Builder } = require('nuxt')
// Config & ENV
process.noDeprecation = true
const config = require('./nuxt.config')
const { isProdMode, environment } = require('./environment')
const port = environment.PORT || 3000
const host = isProdMode ? (environment.HOST || '127.0.0.1') : '0.0.0.0'
// Server extends
const webrtcServer = require('./servers/webrtc.server')
const barrageServer = require('./servers/barrage.server')
const updateGAScript = require('./utils/update-analytics')
// App
const app = express()
const nuxt = new Nuxt(config)
const server = new http.Server(app)
const io = socketio(server, { transports: ['websocket'] })
// App dev proxy server
if (config.dev) {
app.get('/proxy/*', (req, res) => {
const targetUrl = 'http://' + req.url.replace('/proxy/', '')
require('request').get(targetUrl).pipe(res)
})
}
// App config
app.use(nuxt.render)
app.set('port', port)
// Build only in dev mode
if (config.dev) {
const builder = new Builder(nuxt)
builder.build().catch((error) => {
consola.error(error)
process.exit(1)
})
}
// Listen the server
server.listen(port, host)
// App ready
consola.ready({
badge: true,
message: `Nuxt.js SSR Server listening on ${host}:${port}, at ${new Date().toLocaleString()}, env: ${environment.NODE_ENV}`
})
// 更新 GA 脚本
updateGAScript()
// barrage server
barrageServer(io)
// webrtc Server
webrtcServer(io)