В этом посте мы создадим и посмотрим, насколько легко создать собственное приложение для чата в реальном времени в консоли. Это чат-приложение состоит из двух частей: одна часть - это сервер, а вторая - клиент.
Что нам понадобится для этого урока
- Установлены NPM и NodeJS
socket.io
иsocket.io-client
модуль
Настройка нашего проекта
Я буду создавать свой сервер и клиент в одном проекте. Если вы хотите развернуть код сервера у своего хостинг-провайдера, вам необходимо создать отдельный проект. Сначала я создал каталог с именем chat-cli
и инициализировал проект npm с помощью npm init -y
.
Теперь я установил необходимые модули, такие как socket.io
и socket.io-client
с npm install socket.io socket.io-client
. Я создал два файла в нашем проекте index.js
(содержит код клиента) и server.js
(содержит код сервера). А теперь давайте углубимся в подробности.
Создание сервера Socket.io
Нам нужен сервер socket.io для обработки всех событий и отправки их нашему клиенту. Итак, давайте создадим его.
Откройте ваш server.js
файл и давайте напишем код.
// Created a socket.io server const io = require("socket.io")(); // This should be a free port on our server. const PORT = process.env.PORT || 3000;
// Created a empty user object, This will store names of our users. const users = {};
// Listening for a connection event (This event fires when a client is connected to your server) io.on("connection", (socket) => { console.log("New Connection: " + socket.id); // If user emitted a `new user` event, This callback will be called with his name. socket.on('new user', (name) => { // Storing his name users[socket.id] = name; // Emitting an event to all users except that user. socket.broadcast.emit("message", `${name} joined the chat.`) }); // Listening for a `message` event. socket.on('message', (text) => { // Emitting an event to all users except that user. socket.broadcast.emit("message", `${users[socket.id]}> ${text}`); }); });
// Starting up server on PORT io.listen(PORT);
Теперь наш серверный код готов.
Создание клиента для сервера
Нам нужно создать клиента и позволить ему подключиться к нашему серверу.
Откройте index.js
файл и давайте напишем код.
// IMPORTING `socket.io-client` module const io = require('socket.io-client'); // Creating client at the server, you need to pass url of your server where you hosted it. const socket = io("http://localhost:3000"); // IMPORTING readline module to read from console. const readline = require('readline');
// Creating an interface to get input from our console. const rl = readline.createInterface({ input: process.stdin, });
// Getting users name. console.log("What is your name?"); rl.question("What is your name?", (text) => { // Sending users name to server socket.emit('new user', text.trim()); console.log("You joined the chat"); process.stdout.write("> "); });
// Listening for event `message` from our server (This will fire when server sends `message` event) socket.on("message", (text) => { // Erasing Last line process.stdout.write("\r\x1b[K") console.log(text); process.stdout.write("> "); }); // Prompting user to enter message. rl.prompt();
// Fires when we input text from user. rl.on('line', (text) => { // Sending message to our server. socket.emit('message', text.trim()); process.stdout.write("> "); rl.prompt(); });
Наш клиентский код готов.
Как бегать
Сначала откройте три терминала или cmd в каталоге вашего проекта. Сначала запустите сервер, набрав node server.js
.
Теперь запустите два клиента, с которыми хотите пообщаться, набрав node index.js
на двух терминалах или cmd.
Если вы все сделали правильно, то сможете пообщаться.
Ссылка на этот проект, вы можете клонировать и разветвлять этот проект.