From e3d66709e4f2257f7a43a295fabc86aa7cbad1da Mon Sep 17 00:00:00 2001 From: wancat Date: Sat, 15 Jul 2023 15:04:58 +0800 Subject: [PATCH] Connect to terminal in raw mode Able to use VIM --- server/client.js | 25 ++++++++++++++++--------- server/websocket.js | 4 ++-- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/server/client.js b/server/client.js index 5b7090b..5535d36 100644 --- a/server/client.js +++ b/server/client.js @@ -1,11 +1,13 @@ -import readline from 'readline' -import { exit } from 'process' +import { stdin, stdout, exit } from 'process' import { io } from 'socket.io-client' +import { Writable } from 'stream' +import { pipeline } from 'stream/promises' -const rl = readline.createInterface({ - input: process.stdin, - output: process.stdout, -}) +console.log(stdin) +console.log(process.stdin.isTTY) +stdin.setRawMode(true) +stdin.resume() +stdin.setEncoding('utf8') const socket = io('ws://localhost:8080') @@ -14,7 +16,7 @@ socket.on('open', function open() { }) socket.on('message', function incoming(data) { - console.log(`${data}`) + stdout.write(data) }) socket.on('close', function close() { @@ -22,6 +24,11 @@ socket.on('close', function close() { exit() }) -rl.on('line', (input) => { - socket.send(input) +stdin.on('data', (key) => { + if (key === '\u0003') { + socket.close() + exit() + } else { + socket.send(key) + } }) diff --git a/server/websocket.js b/server/websocket.js index 761f364..6f0140b 100644 --- a/server/websocket.js +++ b/server/websocket.js @@ -13,12 +13,12 @@ io.on('connection', async (socket) => { const stream = await attachContainer(container) stream.on('data', (chunk) => { - socket.send(chunk.toString()) + socket.send(chunk) }) socket.on('message', function incoming(message) { console.log(`From client: ${message}`) - stream.write(message + '\n') + stream.write(message) }) socket.on('close', () => {