-
-
Notifications
You must be signed in to change notification settings - Fork 163
/
Copy pathserver.ts
54 lines (46 loc) · 1.48 KB
/
server.ts
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
import fs from 'node:fs'
import { createServer } from 'node:http'
import path from 'node:path'
import { createRpcProxy, setElectronProxyContext } from '@vue/devtools-kit'
import { createApp, eventHandler, toNodeListener } from 'h3'
import { Server } from 'socket.io'
const port = process.env.PORT || 8098
export function init() {
const app = createApp()
app.use(
'/',
eventHandler(() => {
const userAppContent = fs.readFileSync(path.join(__dirname, './user-app.iife.js'), 'utf-8')
const processSyntaxPolyfill = `if(!window.process){window.process={env:{}}};`
return processSyntaxPolyfill + userAppContent
}),
)
const httpServer = createServer(toNodeListener(app))
const io = new Server(httpServer, {
cors: {
origin: true,
},
maxHttpBufferSize: 1e8,
})
io.on('connection', (socket) => {
setElectronProxyContext(socket)
createRpcProxy({
preset: 'electron',
})
// Disconnect any previously connected apps
socket.broadcast.emit('vue-devtools:disconnect-user-app')
socket.on('vue-devtools:init', () => {
socket.broadcast.emit('vue-devtools:init')
})
socket.on('vue-devtools:disconnect', () => {
socket.broadcast.emit('vue-devtools:disconnect')
})
socket.on('disconnect', (reason) => {
if (reason.indexOf('client'))
socket.broadcast.emit('vue-devtools-disconnect-devtools')
})
})
httpServer.listen(port, () => {
console.log(`listening on 0.0.0.0:${port}`)
})
}