Socket.IO — یہ کیا ہے، ریئل ٹائم تعامل کے لیے لائبریری

مصنف: IT Sectr اشاعت: 2026-06-01 مطالعے کا وقت: 8 منٹ

Socket.IO کلائنٹ اور سرور کے درمیان دو طرفہ ریئل ٹائم مواصلات کے لیے ایک لائبریری ہے جو WebSocket پر مبنی ہے اور خودکار فال بیک کے ساتھ ہے۔ یہ چیٹ، گیمز اور مشترکہ ایڈیٹرز میں فوری ڈیٹا منتقلی کے لیے قابل اعتماد ٹرانسپورٹ فراہم کرتی ہے۔ سرکاری Socket.IO دستاویزات (2024) کے مطابق، لائبریری مناسب ترتیب کے ساتھ ایک سرور پر دس لاکھ سے زیادہ کنکشنز پروسیس کرتی ہے۔

اہم نکات

  • Socket.IO — ریئل ٹائم مواصلات کے لیے ایک لائبریری، جو WebSocket اور HTTP long-polling پر کام کرتی ہے۔
  • دو طرفہ مواصلات — کلائنٹ اور سرور دونوں کسی بھی وقت ڈیٹا بھیجنا شروع کر سکتے ہیں۔
  • خودکار فال بیک — WebSocket دستیاب نہ ہونے پر کوڈ تبدیل کیے بغیر HTTP long-polling پر سوئچ ہو جاتا ہے۔
  • کمرے اور نام کی جگہیں — ہدفی پیغام رسانی کے لیے کنکشنز کی گروپ بندی۔
  • واقعہ پر مبنی ماڈل — صوابدیدی پے لوڈ کے ساتھ نامزد واقعات کے ذریعے ڈیٹا کا تبادلہ۔

Socket.IO کیا ہے؟

Socket.IO کلائنٹ اور سرور کے درمیان دو طرفہ واقعہ پر مبنی مواصلات کے لیے ایک اوپن سورس JavaScript لائبریری ہے۔ اسے 2010 میں ڈویلپر Guillermo Rauch نے بنایا تھا اور تب سے یہ Node.js پر ریئل ٹائم ایپلیکیشنز کے لیے ڈی فیکٹو معیار بن گیا ہے۔

مقامی WebSocket API کے برعکس، Socket.IO اضافی تجرید فراہم کرتا ہے: کمرے، نام کی جگہیں، خودکار دوبارہ کنکشن اور بائنری ڈیٹا کی اقسام۔ لائبریری WebSocket کا علیحدہ نفاذ نہیں ہے — یہ ٹرانسپورٹ پرت کے طور پر Engine.IO استعمال کرتی ہے، جو پہلے HTTP long-polling کنکشن قائم کرتی ہے، پھر WebSocket میں اپ گریڈ کرنے کی کوشش کرتی ہے۔

npm کے اعدادوشمار (2025) کے مطابق، socket.io پیکیج کی ہفتہ وار 12 ملین سے زیادہ کاپیاں ڈاؤن لوڈ کی جاتی ہیں، جو اسے Node.js ماحولیاتی نظام میں مقبول ترین لائبریریوں میں سے ایک بناتی ہے۔ Socket.IO تمام جدید پلیٹ فارمز پر معاون ہے: براؤزرز، iOS، Android، React Native اور ڈیسک ٹاپ ایپلیکیشنز۔

تاریخ اور ورژن

Socket.IO ورژن 1.0 2014 میں جاری کیا گیا تھا اور اس نے نام کی جگہوں کا تصور متعارف کرایا، جو ایک TCP کنکشن پر متعدد منطقی چینلز کو ملٹی پلیکس کرنے کی اجازت دیتے ہیں۔ ورژن 2.0 (2017) نے بائنری ڈیٹا کے لیے معاونت شامل کی اور تجزیہ کارکردگی کو بہتر کیا۔ موجودہ ورژن 4.x (2020–2025) میں TypeScript کے لیے مکمل معاونت، اسکیلنگ کے لیے فلیگ شپ اڈاپٹر موڈ اور بہتر پسماندہ مطابقت شامل ہے۔

ہر بڑی ریلیز API پسماندہ مطابقت برقرار رکھتی ہے — ایک socket.io@2 کلائنٹ خصوصی مطابقت موڈ کے ذریعے socket.io@4 سرور سے منسلک ہو سکتا ہے۔ یہ طویل المدت منصوبوں کے لیے اہم ہے جہاں کلائنٹ سائیڈ اپ گریڈ بتدریج ہوتے ہیں۔

Socket.IO کیسے کام کرتا ہے

Socket.IO آرکیٹیکچر دو اجزاء پر مشتمل ہے: سرور ماڈیول (npm پیکیج socket.io) اور کلائنٹ ماڈیول (npm پیکیج socket.io-client)۔ سرور Node.js HTTP(S) سرور پر چلتا ہے اور ٹرانسپورٹ پرت کو منظم کرنے کے لیے Engine.IO استعمال کرتا ہے۔

ابتدائی کنکشن پر، کلائنٹ سرور کو HTTP درخواست بھیجتا ہے۔ Engine.IO جواب دیتا ہے اور ایک long-polling کنکشن قائم کرتا ہے۔ اس کے بعد، کلائنٹ ٹرانسپورٹ پروٹوکول کو WebSocket میں اپ گریڈ کرنے کی درخواست بھیجتا ہے۔ اگر سرور WebSocket کو سپورٹ کرتا ہے، تو اپ گریڈ ایک TCP سیشن میں ہوتا ہے۔ اگر نہیں، تو کنکشن long-polling پر رہتا ہے اور ایپلیکیشن کوڈ میں تبدیلی کی ضرورت نہیں ہوتی۔

Socket.IO کارکردگی کے ٹیسٹ (2024) کے مطابق، WebSocket استعمال کرتے وقت تاخیر 2–5 ms فی پیغام ہے، جبکہ long-polling HTTP اوور ہیڈ کی وجہ سے 150–300 ms کا اضافہ کرتا ہے۔ ٹرانسپورٹ کا انتخاب ڈویلپر کے لیے شفاف ہے۔

Engine.IO پروٹوکول

Engine.IO نچلی سطح کی ٹرانسپورٹ پرت ہے جس پر Socket.IO بنایا گیا ہے۔ یہ کنکشن قیام، ٹرانسپورٹ انتخاب، heartbeat (ping/pong) اور کنکشن ختم کرنے کو سنبھالتا ہے۔ Engine.IO پیکیٹ کی اہم اقسام ہیں: open (ابتداء)، close (بندش)، ping/pong (زندہ رکھنا)، upgrade (ٹرانسپورٹ تبدیلی) اور message (ڈیٹا)۔

Socket.IO Engine.IO کے اوپر اپنا واقعہ پر مبنی ماڈل بناتا ہے — ڈویلپر اسی کے ساتھ کام کرتا ہے۔ ہر Socket.IO پیغام ترسیل کی تصدیق کے لیے ایک منفرد شناخت کنندہ کے ساتھ Engine.IO پیکیٹ میں لپیٹا جاتا ہے۔

Socket.IO کی اہم خصوصیات

Socket.IO خصوصیات کا ایک مجموعہ فراہم کرتا ہے جو مقامی WebSocket API میں موجود نہیں ہیں اور ریئل ٹائم ایپلیکیشنز کی ترقی کو نمایاں طور پر آسان بناتے ہیں۔ آئیے اہم خصوصیات پر نظر ڈالتے ہیں۔

خودکار دوبارہ کنکشن — کلائنٹ منقطع ہونے پر ایکسپونینشل بیک آف (100 ms، 200 ms، 400 ms... زیادہ سے زیادہ تک) کے ساتھ خود بخود کنکشن بحال کرتا ہے۔ Socket.IO دستاویزات (2024) کے مطابق، دوبارہ کوشش کی ترتیبات reconnectionDelay اور reconnectionAttempts پیرامیٹرز کے ذریعے دستیاب ہیں۔ یہ آپشن موبائل ایپلیکیشنز کے لیے اہم ہے جہاں نیٹ ورک تبدیل ہونے پر کنکشن منقطع ہو سکتا ہے۔

کمروں کی معاونت — سرور ساکٹ کو کمروں میں گروپ کر سکتا ہے اور صرف ایک مخصوص کمرے کے شرکاء کو پیغامات بھیج سکتا ہے۔ کمروں کو واضح تخلیق کی ضرورت نہیں ہوتی — پہلے ساکٹ کے شامل ہونے پر یہ بن جاتے ہیں۔ کمرے عمل درجے پر لاگو ہوتے ہیں اور خصوصی اڈاپٹر کے بغیر مختلف سرورز کے درمیان شیئر نہیں ہوتے۔

نام کی جگہیں — ایک کنکشن پر مواصلاتی چینلز کی منطقی علیحدگی۔ مثال کے طور پر، چیٹ پیغامات کے لیے /chat نام کی جگہ اور اطلاعوں کے لیے /notifications۔ ہر نام کی جگہ کے اپنے کمرے، مڈل ویئر اور ہینڈلر ہوتے ہیں۔ نام کی جگہیں ایک TCP کنکشن پر ملٹی پلیکس ہوتی ہیں، جس سے وسائل کی بچت ہوتی ہے۔

ترسیل کی تصدیق — پیغام بھیجتے وقت، ایک کال بیک فنکشن پاس کیا جا سکتا ہے جو سرور کی طرف سے وصولی کی تصدیق کرنے پر کال کیا جائے گا۔ یہ ہر پیکیٹ کے لیے ایک منفرد شناخت کنندہ کے ذریعے لاگو کیا جاتا ہے۔ تصدیق کا طریقہ کار یقینی بناتا ہے کہ اہم پیغامات (مثلاً ادائیگی کے لین دین) وصول کنندہ تک پہنچائے جائیں۔

Socket.IO بمقابلہ WebSocket: موازنہ

Socket.IO اور مقامی WebSocket کے درمیان انتخاب منصوبے کی ضروریات پر منحصر ہے۔ WebSocket ایک معیاری پروٹوکول (RFC 6455) ہے جو تمام جدید براؤزرز کے ذریعے تعاون یافتہ ہے۔ Socket.IO ایک لائبریری ہے جو WebSocket کو ٹرانسپورٹ کے طور پر استعمال کرتی ہے لیکن اضافی خصوصیات شامل کرتی ہے۔

خصوصیتSocket.IOWebSocket
ٹرانسپورٹWebSocket + HTTP long-polling (فال بیک)صرف WebSocket
واقعہ ماڈلJSON پے لوڈ کے ساتھ نامزد واقعاتصرف متن/بائنری فریم
کمرےبلٹ ان ساکٹ گروپ بندیدستی نفاذ کی ضرورت
خودکار دوبارہ کنکشنبلٹ اندستی نفاذ کی ضرورت
ترسیل کی تصدیقکال بیک کے ساتھ ACK طریقہ کارپروٹوکول ایکسٹینشن کے ذریعے دستیاب
اسکیلنگاڈاپٹر (Redis, MongoDB, Cluster)اپنا بنیادی ڈھانچہ درکار
لائبریری کا سائز~50 KB (کلائنٹ، gzip)براؤزر میں بلٹ (0 KB)

اگر آپ کے منصوبے کو زیادہ سے زیادہ کارکردگی اور کم سے کم کلائنٹ سائز کی ضرورت ہے — مقامی WebSocket منتخب کریں۔ اگر آپ کو قابل اعتماد ترسیل، گروپ بندی اور واقعہ پر مبنی ماڈل کی ضرورت ہے — Socket.IO تیار تجرید کی وجہ سے ترقی کے وقت کو 2–3 گنا کم کر دے گا۔

State of JS 2024 سروے کے مطابق، 67% ریئل ٹائم ایپلیکیشن ڈویلپرز آسان API اور کنارے کی صورتوں (نیٹ ورک منقطع، دوبارہ کنکشن، بائنری ڈیٹا) کے بلٹ ان ہینڈلنگ کی وجہ سے Socket.IO کو ترجیح دیتے ہیں۔

پروجیکٹ میں Socket.IO کیسے جوڑیں

Socket.IO انسٹال کرنا دو پیکیجز کی ضرورت ہے: سرور سائیڈ اور کلائنٹ سائیڈ۔ آئیے Node.js پروجیکٹ کے لیے بنیادی سیٹ اپ دیکھتے ہیں۔ سرور HTTP سرور بناتا ہے، Socket.IO کو شروع کرتا ہے اور کلائنٹ کنکشن اور منقطع ہونے کے واقعات کو سنبھالتا ہے۔

Socket.IO دستاویزات (2024) کے مطابق، سرور کو بلٹ ان http ماڈیول استعمال کرکے Express کے بغیر شروع کیا جا سکتا ہے، لیکن حقیقی منصوبوں میں HTTP درخواست روٹنگ کے لیے عام طور پر Express یا Fastify استعمال کیا جاتا ہے۔

Node.js میں سرور سائیڈ کوڈ

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, {
    cors: { origin: '*' }
});

io.on('connection', (socket) => {
    console.log('کلائنٹ منسلک:', socket.id);

    socket.emit('welcome', { message: 'Hello from server' });

    socket.on('disconnect', () => {
        console.log('کلائنٹ منقطع');
    });
});

server.listen(3000, () => {
    console.log('سرور پورٹ 3000 پر چل رہا ہے');
});

براؤزر میں کلائنٹ سائیڈ کوڈ

js
import { io } from 'socket.io-client';

const socket = io('http://localhost:3000', {
    transports: ['websocket', 'polling'],
    reconnectionDelay: 1000
});

socket.on('welcome', (data) => {
    console.log(data.message);
});

socket.emit('chat message', {
    user: 'Alice',
    text: 'Hello everyone!'
});

Socket.IO میں واقعات اور کمرے

Socket.IO واقعہ ماڈل نامزد واقعات پر مبنی ہے۔ سرور اور کلائنٹ ایک مخصوص واقعہ کے نام سے منسلک پیغامات بھیجتے اور وصول کرتے ہیں۔ پے لوڈ ایک سٹرنگ، JSON آبجیکٹ یا بائنری ڈیٹا (Buffer, ArrayBuffer, Blob) ہو سکتا ہے۔

ہر واقعہ ACK (اعتراف) کی حمایت کرتا ہے — ایک کال بیک فنکشن پاس کرنا جو وصول کنندہ کے ذریعے واقعہ کی پروسیسنگ کے بعد بھیجنے والے کی طرف عمل میں آتا ہے۔ یہ واقعہ ماڈل پر درخواست جوابی پیٹرن لاگو کرنے کی اجازت دیتا ہے۔ ACK صرف اس وقت کام کرتا ہے جب وصول کنندہ واضح طور پر کال بیک کو کال کرے۔

Socket.IO دستاویزات (2024) کے مطابق، بہترین کارکردگی کے لیے ایک پیغام کا زیادہ سے زیادہ سائز 1 MB سے زیادہ نہیں ہونا چاہیے۔ بڑے پیغامات کو ٹکڑوں میں تقسیم کیا جانا چاہیے یا علیحدہ چینل کے ذریعے بھیجا جانا چاہیے۔

کمروں کے ساتھ کام کرنا

js
io.on('connection', (socket) => {
    socket.join('room-1');

    socket.to('room-1').emit('user joined', {
        userId: socket.id
    });

    io.to('room-1').emit('message', {
        text: 'Broadcast to room'
    });

    socket.leave('room-1');
});

Socket.IO کی اسکیلنگ

افقی اسکیلنگ کے لیے متعدد سرور عملوں کے درمیان حالت شیئر کرنے کے مسئلے کو حل کرنے کی ضرورت ہے۔ کمرے، نام کی جگہیں اور منسلک ساکٹ کی فہرست ایک عمل کی میموری میں محفوظ ہوتی ہے اور اڈاپٹر کے بغیر دوسرے عملوں کو نظر نہیں آتی۔

سرکاری Socket.IO اڈاپٹر: redis (Redis Pub/Sub کے ذریعے)، mongodb (MongoDB change streams کے ذریعے)، cluster (Node.js کلسٹر ملٹی پروسیس موڈ کے لیے)۔ اڈاپٹر Socket.IO مثالوں کے درمیان پیغام بروکر کے طور پر کام کرتا ہے۔ جب کسی کمرے میں واقعہ بھیجا جاتا ہے، اڈاپٹر اسے Redis میں شائع کرتا ہے اور تمام سرورز اطلاع حاصل کرتے ہیں۔

Socket.IO لوڈ ٹیسٹنگ (2024) کے مطابق، Redis اڈاپٹر کے ساتھ 4 سرورز کا کلسٹر 10 ms سے کم تاخیر کے ساتھ 400,000 تک بیک وقت کنکشنز پروسیس کرتا ہے۔ اڈاپٹر کے بغیر، ایک Node.js عمل کی زیادہ سے زیادہ صلاحیت 1 GB میموری کے ساتھ تقریباً 100,000 کنکشنز ہے۔

Redis اڈاپٹر کنفیگریشن

js
const Server = require('socket.io');
const RedisAdapter = require('@socket.io/redis-adapter');
const Redis = require('ioredis');

const pubClient = new Redis({ host: 'localhost', port: 6379 });
const subClient = pubClient.duplicate();
const io = new Server(server);
io.adapter(RedisAdapter(pubClient, subClient));

Kubernetes یا Docker Swarm استعمال کرتے وقت، سیشن ایفینیٹی (اسٹکی سیشن) ترتیب دینے کی سفارش کی جاتی ہے تاکہ ایک ہی کلائنٹ کی درخواستیں ایک ہی سرور پر جائیں؛ بصورت دیگر ہر دوبارہ کنکشن پر تفویض تبدیل ہو سکتی ہے۔

اکثر پوچھے گئے سوالات

Socket.IO مقامی WebSocket سے کیسے مختلف ہے؟

Socket.IO نامزد واقعات کے ساتھ ایک واقعہ ماڈل، خودکار دوبارہ کنکشن، کمروں کی معاونت اور HTTP long-polling پر فال بیک فراہم کرتا ہے۔ مقامی WebSocket ایک نچلی سطح کا پروٹوکول ہے جس میں کم سے کم API ہے اور ان میکانکس کے دستی نفاذ کی ضرورت ہے۔

کیا Socket.IO کو Node.js کے بغیر استعمال کیا جا سکتا ہے؟

ہاں، Python (python-socketio)، Java (netty-socketio)، Go (go-socketio) اور دیگر زبانوں کے لیے سرور کی طرف تیسرے فریق کے نفاذ موجود ہیں۔ socket.io-client JavaScript، Swift، Kotlin اور C++ کے لیے دستیاب ہے۔

Socket.IO کتنے بیک وقت کنکشنز سنبھال سکتا ہے؟

Socket.IO کے ساتھ ایک Node.js عمل 1 GB RAM کے ساتھ 100,000 کنکشنز تک پروسیس کرتا ہے۔ Redis اڈاپٹر اور 4 سرورز کے ساتھ، کلسٹر 400,000 بیک وقت کلائنٹس تک سنبھال سکتا ہے۔

کیا Socket.IO موبائل پلیٹ فارمز کو سپورٹ کرتا ہے؟

ہاں، iOS کے لیے Swift میں ایک سرکاری کلائنٹ ہے، Android کے لیے — Java/Kotlin میں ایک کلائنٹ ہے۔ React Native کے لیے معیاری JavaScript socket.io-client استعمال ہوتا ہے۔

Socket.IO کنکشن سیکیورٹی کیسے یقینی بنائیں؟

HTTP/WS کے بجائے HTTPS/WSS استعمال کریں، ٹوکن (JWT) کے ذریعے تصدیق کے لیے مڈل ویئر ترتیب دیں، توثیق کاروں کے ذریعے باہر جانے والے واقعات کی حدیں مقرر کریں اور DDoS تحفظ کے لیے ریٹ لمیٹنگ استعمال کریں۔

خلاصہ

  • Socket.IO دو طرفہ ریئل ٹائم مواصلات کے لیے ایک لائبریری ہے، جو WebSocket پر بنائی گئی ہے اور HTTP long-polling پر خودکار فال بیک کے ساتھ ہے۔
  • واقعہ پر مبنی ماڈل نامزد واقعات اور ACK تصدیقات کے ساتھ مقامی WebSocket کے مقابلے میں ترقی کو آسان بناتا ہے۔
  • کمرے اور نام کی جگہیں کلائنٹس کو گروپ کرنے اور منطقی مواصلاتی چینلز کو الگ کرنے کی اجازت دیتے ہیں۔
  • خودکار دوبارہ کنکشن ایکسپونینشل بیک آف کے ساتھ موبائل نیٹ ورکس میں استحکام کو یقینی بناتا ہے۔
  • افقی اسکیلنگ ایپلیکیشن کوڈ کو تبدیل کیے بغیر Redis یا MongoDB اڈاپٹر کے ذریعے لاگو کی جاتی ہے۔
  • اڈاپٹر Pub/Sub بروکرز کے ذریعے عملوں کے درمیان حالت شیئر کرنے کے مسئلے کو حل کرتے ہیں۔
  • سادہ منصوبوں کے لیے کم سے کم ٹرانسپورٹ ضروریات کے ساتھ، مقامی WebSocket منتخب کریں؛ قابل اعتماد پیداواری نظاموں کے لیے Socket.IO منتخب کریں۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں