Hai, Habr. Obrolan konsol adalah hal yang hebat, tetapi untuk front-end, tetapi bagaimana jika Anda menginginkan hal yang sama, tetapi untuk backend. Jika ya, maka artikel ini untuk Anda. Tapi alat apa yang sering digunakan di backend? Itu benar ssh, jadi saya mewakili sshchat.
Bagaimana kelihatannya
Di suatu tempat di server, program pada simpul berputar.
Segera setelah seseorang ingin terhubung ke obrolan, ia masuk:
ssh server -p 8022
Setelah itu, sistem meminta kata sandi dan memverifikasinya dengan kata sandi dalam file khusus. Jika kata sandi cocok, maka kami terhubung ke obrolan (pengguna menerima 100 pesan sebelumnya dan semua orang melihat bahwa ia terhubung).
Kemudian dia menerima pesan dari orang lain, dan bisa menulis sendiri.
Di sini dengan pesan yang lebih menarik:
@box{@color(red){Red text in box}}
Kirim teks merah dalam kotak.
Mari kita mulai
Untuk bekerja dengan ssh, kami akan menggunakan https://www.npmjs.com/package/ssh2 .
Untuk memformat kami menggunakan kapur dan boxen.
Jadi instal:
npm i ssh2 chalk boxen
Sekarang kode itu sendiri adalah salah satu bagian terpenting dari parser pesan ini ( GitHub ):
Pemformatan ( GitHub ):
const chalk = require('chalk'); const { parseAndExecute } = require('./parserExec')
Metode untuk mengirim pesan ke semua pengguna dan menyimpan 100 pesan ( GitHub ):
let listeners = [];
Lobi, pembuatan dan otorisasi server ( GitHub ):
const { Server } = require('ssh2'); const { readFileSync } = require('fs'); const hostKey = readFileSync('./ssh');
Berbagai metode ( GitHub ):
const { createInterface } = require('readline'); module.exports.getStream = function(client, onStream, onEnd){ client
Sekarang gabungkan ( GitHub ):
const { createServer, setConnectCallback } = require('./lobby'); const { getStream, getCommunicator } = require('./utils'); const { addListener, delListener, broadcast, getCache } = require('./broadcaster'); const { format, getNick } = require('./format');
Dan langkah terakhir adalah contoh server:
const chat = require('.') chat({})
File users.json juga menjelaskan pengguna dan kata sandi mereka.
Kesimpulan
Ini adalah bagaimana Anda dapat menulis bukan obrolan termudah di ssh.
Untuk obrolan seperti itu, klien tidak perlu menulis, ia memiliki kemampuan desain, dan siapa pun dapat menggunakannya.
Apa lagi yang bisa dilakukan:
- Tambahkan kemampuan untuk membuat fitur desain Anda sendiri
- Tambahkan dukungan penurunan harga
- Tambahkan dukungan bot
- Tingkatkan keamanan kata sandi (hash dan garam)
Repositori terakhir