Salut, Habr. Le chat sur console est une bonne chose, mais pour le front-end, mais si vous voulez la même chose, mais pour le backend. Si oui, cet article est pour vous. Mais quel outil est souvent utilisé dans le backend? C'est vrai ssh, donc je représente sshchat.
À quoi cela ressemblera
Quelque part sur le serveur, le programme sur le nœud tourne.
Dès que quelqu'un veut se connecter au chat, il entre:
ssh server -p 8022
Après cela, le système demande un mot de passe et le vérifie avec le mot de passe dans un fichier spécial. Si le mot de passe correspond, nous nous connectons au chat (l'utilisateur reçoit 100 messages précédents et tout le monde voit qu'il est connecté).
Il reçoit ensuite les messages des autres et peut écrire le sien.
Ici avec des messages plus intéressants:
@box{@color(red){Red text in box}}
Envoyez le texte rouge dans la boîte.
Commençons
Pour travailler avec ssh, nous utiliserons https://www.npmjs.com/package/ssh2 .
Pour le formatage, nous utilisons de la craie et du boxen.
Alors installez-les:
npm i ssh2 chalk boxen
Maintenant, le code lui-même est l'une des parties les plus importantes de cet analyseur de message ( GitHub ):
Formatage ( GitHub ):
const chalk = require('chalk'); const { parseAndExecute } = require('./parserExec')
Méthodes pour envoyer un message à tous les utilisateurs et enregistrer 100 messages ( GitHub ):
let listeners = [];
Lobby, création et autorisation de serveur ( GitHub ):
const { Server } = require('ssh2'); const { readFileSync } = require('fs'); const hostKey = readFileSync('./ssh');
Différentes méthodes ( GitHub ):
const { createInterface } = require('readline'); module.exports.getStream = function(client, onStream, onEnd){ client
Combinez maintenant ( GitHub ):
const { createServer, setConnectCallback } = require('./lobby'); const { getStream, getCommunicator } = require('./utils'); const { addListener, delListener, broadcast, getCache } = require('./broadcaster'); const { format, getNick } = require('./format');
Et la dernière étape est un exemple de serveur:
const chat = require('.') chat({})
Le fichier users.json décrit également les utilisateurs et leurs mots de passe.
Conclusions
C'est ainsi que vous pouvez écrire le chat le plus simple dans ssh.
Pour une telle conversation, le client n'a pas besoin d'écrire, il a les capacités de conception et n'importe qui peut le déployer.
Quoi d'autre peut être fait:
- Ajoutez la possibilité de créer vos propres caractéristiques de conception
- Ajouter un support de démarque
- Ajouter le support du bot
- Augmentez la sécurité des mots de passe (hachage et sel)
Dépôt final