paint-brush
Imayna WebSockets Chiqa pachapaq Apps kallpachayby@mmenghnani
214 ñawinchasqakuna Musuq historia

Imayna WebSockets Chiqa pachapaq Apps kallpachay

by Mohit Menghnani7m2025/03/09
Read on Terminal Reader

Nishu unay; Ñawinchanapaq

Imayna Websockets chiqa pacha rimanakuy ruwanakuna ruwanapaq llamk'achinku!
featured image - Imayna WebSockets Chiqa pachapaq Apps kallpachay
Mohit Menghnani HackerNoon profile picture

Riqsichikuy: HTTP mana suficiente kaptin

Kuska, Bertwan Erniewan, iskay amistadkuna llamkachkanku proyecto lateral nisqapi musquyninkupi: huk app chat nisqapi, chaymi chiqap pacha rimanakuykunata atichin equipokunapaq, paykunam karumanta llamkanku. Ñawpaq-tukuy codificador Bert mana anchatachu hark'ayta atin imaynachus payqa llimp'i musuq ruwanakunata qhipa-tukuy especialista amigunwan qunakuchkan. "Qaway! ¡Huk mensajeta qelqayman, hinaspan servidorman apachisqa kashan, ¡yaqa chay ratopin rikuni huk kutichiy lloqsimuqta!”, nispa. Ernie, chay backend guru, uyanta k’umuykachin. “Ichaqa, ¿imaynatataq allichanki iskay runakuna huk kutillapi rimanankupaq kallpanchakusqankuta? Aplicacionniykiqa sapa kutillanmi paginata mosoqyachin, manan ‘rikunaykichu’ rimasqaykita, chaymi mana atikunchu cheqaq tiempopi rimayta .”


Sasachakuyqa Bertpa ruwanan HTTP kaqpi llamkan maypi huk cliente huk apamuyta servidormanta mañakunan tiyan. Ernie resumenpi nin: “Llapa amigoykikuna kutichispa mensajeta apachimusunkiman hina, ichaqa chaymanta, qonqayllamanta, mana mayqen kutichiytapas rikunkichu mosoq willakuykuna kasqanmanta mosoqyachinaykikama imaraykuchus manan qhepa willakuyniykita rikuyta atinkuchu mosoqyachinaykikama chay hinataqmi HTTP llank’an!”, nispa.


Kaypi aswan allin kaq hamun: hunt'asqa pila ruwanakuna chiqa pachapi llamk'aq, WebSockets kan. Kay parte super kusikuypaq, chayrayku Erniewan Bertwan hukllawakusun chaymanta yachasun imayna WebSockets llamk'asqankuta, implementacion ruwayninku, razonamiento qhipanpi importante kayninku, chaymanta aswan achka.


¿Imataq WebSockets nisqakuna? Huk Qallariqpa Pakikuynin

WebSockets huk sapa kuti telefono waqyayman rikch'akun huk cliente (web maskaqniyki) chaymanta huk servidor kaqwan. Paykunaqa HTTP protocolomanta hukniray kanku mayqinchus kayhinata ruwan, “huk cartata apachiy, kutichiyta suyay.” WebSockets kaqwan, iskayninku munasqankumanhina mana hark'asqa rimayta atinku. WebSockets kaqpa ruwayninkuna kayhina kanku:


  • Tukuy-duplex: Iskaynin clientepaq chaymanta servidorpaq willayta huk kutillapi apachiyta atikun.
  • Pisi latencia: Manam llumpay kuti kuti makiwan hapinakuyqa kanchu; datos nisqakunaqa mana hark’asqalla puriyta atinku.
  • Llampu: Willakuykuna uchuylla kanku chaymanta banda ancho llamk'ayta pisiyachin.


Ejemplo: Pukllaykunamanta sapa kuti musuqyachiq tabla de puntuación nisqapi siq’iy. HTTP kaqwan, cliente sapa kuti sapa segundo servidorman spam ruwanan tiyan, “¿Ima puntuación tikraypas?” WebSockets kaqwan, servidor willan”, META!” chay ratollapi chay pasasqan.


WebSockets vs HTTP: ¿Imataq Musuq Ruphay?

Bertqa kutirispa tiyaykuspan umanta raqrakun. “Ichaqa HTTP allinta llamkan yaqa llapan apps kaqpaq. ¿Imanasqataq gol postekunata kuyuchina?”, nispa. Ernieqa llamp’ullata asikuspan marcadorta hap’in, hinaspan pizarrapi imatapas qelqayta qallarikun.


Paymi nin: “Hanaqmanta qallarisun”, nispa. “Chiqap pacha kawsay musuqyachiykunata nisunman, kawsaq pukllaymanta puntuacionkuna hina. Clientekunaqa sapa segundon servidorta tapunanku: ‘¿Imapas yachanaypaq kanchu?’, nispa. Chayqa encuesta, chaymi sapa kinsa chunka segundo, tapukunayki: ‘¿Huñunakushanchischu?’, nispa. Asikunapaq hinachu, ¿aw? Hinaspapas askha ancho de banda nisqakunatan utilizan”, nispa.


WebSockets kayta muyurichin:

  • Chiqap pacha Kunanchay: Servidorpi willakuyqa tikrakusqan pacha apachisqa; mana encuesta ruway necesariochu.
  • Chat ruwanakuna: Mana p'anqata musuqyachiyqa necesitakunchu. Qillqasqaykiman hinam willakuykunaqa yaku huntaykuchkan.
  • Achka pukllaq video pukllaykuna: Manaña tartamudeo kuyuykuna. Ruwaykuna pantallakunapi mana pantasqa rikuchisqa kanku.


“HTTP allin decente kachkan imakuna mana kuyukuq kaqwan ruwaypi huk blog utaq ruru p’anqa hina. Kawsaq tinkiykunamanta rimaspa ichaqa, huk mana tukukuq tinkiyninmi necesitakun. WebSockets nisqa.”


Chiqap pacha rimanakuy App nisqa ruway: Allin kaqkuna qallarikun

Ernieqa lentesnintam pichan. "Chaynaqa, huk sanu rimanakuy ruwanata ruwasun", Ernie qaparimun. "Huk Node.js servidorniyuq kasunchik qhipa kaqpaq chaymanta huk React ruwanayuq kasunchik ñawpaq kaqpaq. ¿Listochu kachkanki?"

1. Socket.IO Backend nisqa ruway

“Huk Node.js servidorta hap’iy imaraykuchus Socket.IO partepaq necesitanki”, Ernie nin chiqamanta usqhaylla qillqachkaptin:


 npm init -y npm install express socket.io


Servidorpa sutin (server.js) :

 const express = require('express'); const http = require('http'); const { Server } = require('socket.io'); const app = express(); const server = http.createServer(app); const io = new Server(server); // Serve static files (like React's build folder) app.use(express.static('public')); // Handle WebSocket connections io.on('connection', (socket) => { console.log('New user connected:', socket.id); // Listen for Incoming messages from the socket socket.on('sendMessage', (message) => { console.log('Received:', message); // Broadcast the message to everyone io.emit('receiveMessage', message); }); // Handle user disconnects events socket.on('disconnect', () => { console.log('User left:', socket.id); }); }); server.listen(3000, () => { console.log('Visit http://localhost:3000 on a browser, Server started successful on port 3000'); });


“Cliente chaymanta servidor huknin hukninwan rimayta atinku Socket.IO WebSocket tinkiykuna kamachiyninman gracias nispa. Cliente (sendMessage) ruwayta waqyaptin, sirwiq willayta llapa (io.emit) kaqninta tinkisqa kaqkunaman apachin. Yaqa derecho, ¿aw?”, nispa.


2. React nisqawan Frontend nisqa

“Kunanqa turnoymi. React clientepi llamkayman yaykusun”, nispan Bert nin.


 npx create-react-app chat-client cd chat-client npm install socket.io-client


Rimanakuy componente (Chat.js) :

 import { useState, useEffect } from 'react'; import io from 'socket.io-client'; // Connect to the server const socket = io('http://localhost:3000'); function Chat() { const [message, setMessage] = useState(''); const [messages, setMessages] = useState([]); useEffect(() => { // Listen for new messages socket.on('receiveMessage', (newMessage) => { setMessages([...messages, newMessage]); }); }, [messages]); const sendMessage = () => { if (message.trim()) { socket.emit('sendMessage', message); setMessage(''); } }; return ( <div style={{ padding: '20px' }}> <div> {messages.map((msg, index) => ( <p key={index}>{msg}</p> ))} </div> <input value={message} onChange={(e) => setMessage(e.target.value)} onKeyPress={(e) => e.key === 'Enter' && sendMessage()} /> <button onClick={sendMessage}>Send</button> </div> ); } export default Chat;


Imaynatataq Llamk'achkan :

  • Willakuykuna huk WebSocket kaqninta sirwiqwan mayqin rantiqkunamanpas t'inkisqa kaqkunaman apachin.
  • React ruwana huk p'anqayuq ruwana , UI musuqchayta atin mana p'anqata wakmanta kargaspa.

Prueba Chayta : .

  1. Servidor qallarinapaq, nodo server.js nisqa consola nisqapi qillqay.
  2. React ruwayta qallarinapaq, npm qallariyta consolapi qillqay.
  3. Iskay tablakuna huk navegadorpi kichasqa kaptin, huk tablapi huk willayta qillqay hinaspa reparay imayna yaqa chaylla, huknin tabla kaqlla willakuyta qawachinqa.

Chiqap kawsaypi Uywaykuna Ejemplokuna

Kaymi Bert ruwayta munarqa ruwanapi hapipakuspa, ichaqa Ernie riman, “Aswan chiqa kawsay ruwanakuna huk chhika pantay allichayta necesitanku chaymanta huk ñanta wiñachiypaq marcota mast’arinankupaq”. Wakin sasachakuykunata qhawarisun.

1. Línea De Conexión Sayan

React cliente kaqpi huk musuq tinkinakuy estrategia ruway.

 socket.on('disconnect', () => { console.log('Disconnected. Trying to reconnect...'); socket.connect(); // Auto-reconnect });

2. Usuariopa Identidadnin

WebSocket kaqmanta waqaychay chiqaqchasqa JWT tokenkuna llamk'achispa.

 // On login, send a token socket.emit('authenticate', { token: 'USER_JWT' }); // Server verifies token socket.on('authenticate', ({ token }) => { if (isValidToken(token)) { socket.authenticated = true; } else { socket.disconnect(); } });

3. Rediswan Escala

Redis llamk'achispa hukniray sirwiqpura willaykunata pasayta riqsichiy.

 npm install redis


Servidorpa sutin : 1 .

 const redis = require('redis'); const subscriber = redis.createClient(); subscriber.subscribe('chat-channel'); subscriber.on('message', (channel, message) => { io.emit('receiveMessage', message); });

Chat nisqamanta aswan karun: Huk rakisqa qillqata allichay

Kayqa Bertpa qatiqnin yuyayninmi - Google Docs nisqaman rikch'akuq allichaq. Ernie nin: “Web sockets nisqawanmi uyariwaq hukniray runakunaq cambiasqankuta, chaykunatataq hukllachanki”, nispa.


Kay hina :

  • Usuario A qillqan: “Hola” .

  • Usuario B “o” nisqatam hurqun hinaspa “, Mundo” nisqatapas yapan.

  • Servidor sapa llave ñit'iyta uyarin chaymanta llapa clientekunaman willan, sapan clientenkunapaq huk AKLLANADO qillqata ruwanankupaq.


Código Fragmento : 1.1.

 // Client sends keystrokes textarea.addEventListener('input', (e) => { socket.emit('textChange', e.target.value); }); // Server broadcasts changes socket.on('textChange', (text) => { io.emit('updateText', text); });

Seguridadmanta Asuntukuna

Ernie kayta willawanchik: “¡Manan hayk’aqpas WebSockets mana HTTPS/WSS kaqwan llamk’anaykichu tiyan!”


  1. WSS (WebSocket Secure) nisqawan llamk'achiy :
 const io = new Server(server, { cors: { origin: "https://yourdomain.com" }, });


  1. Llapan yaykuykunata chiqaqchay chaymanta ima willaytapas ch'uyanchanapaq mayqinkunachus XSS ataques kaqman apayta atinku.


  2. Tarifa límite kaqmanta ruway spamming ruwayniyuq ruwaqkunaman.


FAQs nisqa

Tapuy: ¿WebSockets kaqpa utqaylla kaynin HTTP kaqmanta aswan allinchu?

A: ¡Arí! Chaylla ruwanakunapaq, WebSockets aswan allin kanku imaraykuchus tapuy ruway necesidadta hurqunku.


Tapuy: ¿Atikunmanchu REST APIkuna WebSockets kaqwan kuska llamk'achiyta?

R: Arí, mana iskayrayaspa! WebSockets kawsaq musuqyachiykunawan chaymanta REST kaqwan llamk'achiy CRUD ruwanakuna ruwanapaq.


Tapuq: ¿Imaynatataq huk servidor urmaptin atipayman?

R: Clientekuna kikinmanta wakmanta tinkiyta atinku (qhaway wakmanta tinkinakuy lógica patamanta).


Tukupay Simikuna

Bertpa chat app kunan pings chiqap pacha encantowan chaymanta Ernie asirikun satisfacción. WebSockets mana rimanakuykunallapaqchu, aswanpas kawsaq tablakuna, pukllay, IoT, chaymanta aswan imapaqpas llamk'anku.


Turnoyki: Ñawpaqman riy hinaspa ejemplokunata pruebay, chinkachiy, hinaspa imapas mosoq kaqta paqarichiy. ¡Chiqap pacha appsniyki suyachkanku!