/** * 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) }