39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
'use strict'
|
|
|
|
const WebSocket = require('ws')
|
|
const readline = require('readline')
|
|
const ws = new WebSocket(process.argv[2] || 'ws://localhost:8080')
|
|
const rl = readline.createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout,
|
|
prompt: '-> '
|
|
})
|
|
const gray = '\u001b[90m'
|
|
const red = '\u001b[31m'
|
|
const reset = '\u001b[39m'
|
|
ws.on('open', () => {
|
|
rl.output.write(`${gray}-- Connected --${reset}\n\n`)
|
|
rl.prompt()
|
|
})
|
|
rl.on('line', (msg) => {
|
|
ws.send(msg, () => {
|
|
rl.output.write(`${gray}<= ${msg}${reset}\n\n`)
|
|
rl.prompt()
|
|
})
|
|
})
|
|
ws.on('message', function (msg) {
|
|
readline.clearLine(rl.output)
|
|
readline.moveCursor(rl.output, -3 - rl.line.length, -1)
|
|
rl.output.write(`${gray}=> ${msg}${reset}\n\n`)
|
|
rl.prompt(true)
|
|
})
|
|
ws.on('close', () => {
|
|
readline.cursorTo(rl.output, 0)
|
|
rl.output.write(`${gray}-- Disconnected --${reset}\n\n`)
|
|
process.exit()
|
|
})
|
|
ws.on('error', (err) => {
|
|
readline.cursorTo(rl.output, 0)
|
|
rl.output.write(`${red}-- Error --${reset}\n`)
|
|
rl.output.write(`${red}${err.stack}${reset}\n`)
|
|
}) |