Hola Habr El chat de consola es una gran cosa, pero para el front-end, pero qué pasa si quieres lo mismo, pero para el backend. Si es así, entonces este artículo es para ti. Pero, ¿qué herramienta se usa a menudo en el backend? Así es ssh, así que represento sshchat.
Como se vera
En algún lugar del servidor, el programa en el nodo está girando.
Tan pronto como alguien quiere conectarse al chat, ingresa:
ssh server -p 8022
Después de eso, el sistema solicita una contraseña y la verifica con la contraseña en un archivo especial. Si la contraseña coincide, nos conectamos al chat (el usuario recibe 100 mensajes anteriores y todos los demás ven que está conectado).
Luego recibe los mensajes de los demás y puede escribir los suyos.
Aquí con mensajes más interesantes:
@box{@color(red){Red text in box}}
Enviar texto rojo en el cuadro.
Empecemos
Para trabajar con ssh, usaremos https://www.npmjs.com/package/ssh2 .
Para formatear utilizamos tiza y boxen.
Así que instálalos:
npm i ssh2 chalk boxen
Ahora el código en sí es una de las partes más importantes de este analizador de mensajes ( GitHub ):
Formateo ( GitHub ):
const chalk = require('chalk'); const { parseAndExecute } = require('./parserExec')
Métodos para enviar un mensaje a todos los usuarios y guardar 100 mensajes ( GitHub ):
let listeners = [];
Lobby, creación y autorización del servidor ( GitHub ):
const { Server } = require('ssh2'); const { readFileSync } = require('fs'); const hostKey = readFileSync('./ssh');
Varios métodos ( GitHub ):
const { createInterface } = require('readline'); module.exports.getStream = function(client, onStream, onEnd){ client
Ahora combine ( GitHub ):
const { createServer, setConnectCallback } = require('./lobby'); const { getStream, getCommunicator } = require('./utils'); const { addListener, delListener, broadcast, getCache } = require('./broadcaster'); const { format, getNick } = require('./format');
Y el paso final es un servidor de ejemplo:
const chat = require('.') chat({})
El archivo users.json también describe a los usuarios y sus contraseñas.
Conclusiones
Así es como no puedes escribir el chat más fácil en ssh.
Para tal chat, el cliente no necesita escribir, tiene las capacidades de diseño y cualquiera puede implementarlo.
¿Qué más se puede hacer?
- Agregue la capacidad de crear sus propias características de diseño
- Agregar soporte de rebajas
- Agregar soporte de bot
- Aumentar la seguridad de la contraseña (hash y salt)
Repositorio final