mirror of
https://github.com/electron-vite/electron-vite-vue
synced 2025-01-19 20:07:06 +08:00
44 lines
1.1 KiB
TypeScript
44 lines
1.1 KiB
TypeScript
|
/**
|
||
|
* Hot reload from preload script during development
|
||
|
*/
|
||
|
import WebSocket from 'ws'
|
||
|
import chalk from 'chalk'
|
||
|
import pkg from '../package.json'
|
||
|
|
||
|
export interface CreateWsServerOptions {
|
||
|
TAG: string
|
||
|
}
|
||
|
|
||
|
export function createWsServer(options: CreateWsServerOptions) {
|
||
|
const { TAG } = options
|
||
|
const port = pkg.env.PORT_WS
|
||
|
const host = '127.0.0.1'
|
||
|
const wss = new WebSocket.Server({ host, port })
|
||
|
const wssObj: { wss: WebSocket.Server; instance: WebSocket | null } = { wss, instance: null }
|
||
|
|
||
|
console.log(TAG, 'Wss run at - ' + chalk.yellow(`ws://${host}:${port}`))
|
||
|
|
||
|
wss.on('connection', ws => {
|
||
|
console.log(TAG, chalk.yellow(`wss.on('connection')`))
|
||
|
|
||
|
wssObj.instance = ws
|
||
|
ws.on('message', message => {
|
||
|
console.log(TAG, `ws.on('message'):`, message.toString())
|
||
|
})
|
||
|
|
||
|
ws.send(formatWsSendData({ cmd: 'message', data: 'connected.' }))
|
||
|
})
|
||
|
|
||
|
wss.on('close', () => {
|
||
|
console.log(TAG, chalk.gray(`wss.on('close')`))
|
||
|
|
||
|
wssObj.instance = null
|
||
|
})
|
||
|
|
||
|
return wssObj
|
||
|
}
|
||
|
|
||
|
export function formatWsSendData(json: { cmd: string, data?: any }) {
|
||
|
return JSON.stringify(json)
|
||
|
}
|