ما هي مكتبة ws؟
ws هي مكتبة WebSocket خفيفة الوزن وسريعة ومثبتة عبر الزمن لـ Node.js، مكتوبة بلغة TypeScript. توفر تطبيقات للعميل والخادم لبروتوكول WebSocket (RFC 6455). تتميز المكتبة بحد أدنى من التبعيات، وأداء عالٍ، ودعم كامل لمعايير WebSocket الحديثة، بما في ذلك ضغط permessage-deflate.
لماذا نحتاج ws؟
WebSocket هو بروتوكول اتصال ثنائي الاتجاه عبر TCP، يسمح بتبادل البيانات في الوقت الفعلي بين العميل والخادم دون الحاجة إلى طلبات HTTP مستمرة. مكتبة ws ضرورية لبناء التطبيقات التي تتطلب نقلًا فوريًا للبيانات: الدردشات، الألعاب عبر الإنترنت، أسعار الأسهم، أنظمة الإشعارات، التحرير المشترك للمستندات، وأي خدمات أخرى تعمل في الوقت الفعلي.
كيف يتم التثبيت؟
التثبيت عبر npm أو yarn:
npm install wsyarn add wsلمشاريع TypeScript، لا حاجة لأنواع إضافية — المكتبة تتضمن بالفعل تعريفات الأنواع.
الوظائف الرئيسية
- اتصال ثنائي الاتجاه — إرسال واستقبال الرسائل في وقت واحد.
- إعادة الاتصال التلقائي (يتم تنفيذه بواسطة كود المستخدم، لكن المكتبة توفر جميع الأحداث اللازمة).
- دعم الضغط (permessage-deflate) لتقليل حركة البيانات.
- العمل مع المخازن المؤقتة والسلاسل النصية — إرسال البيانات النصية والثنائية.
- نموذج الأحداث — معالجة أحداث open, message, close, error.
- التجميع (Clustering) — دعم العمل مع عمليات متعددة (عبر broadcast).
- إضافات WebSocket — دعم البروتوكولات والإضافات المخصصة.
مثال كود بلغة TypeScript
خادم وعميل WebSocket بسيطان:
// server.tsimport { WebSocketServer } from 'ws';
const wss = new WebSocketServer({ port: 8080 });
wss.on('connection', (ws) => { console.log('تم اتصال العميل');
ws.on('message', (data) => { console.log('تم الاستلام:', data.toString()); ws.send('مرحبًا من الخادم!'); });
ws.on('close', () => { console.log('تم فصل العميل'); });});
console.log('الخادم يعمل على المنفذ 8080');// client.tsimport WebSocket from 'ws';
const ws = new WebSocket('ws://localhost:8080');
ws.on('open', () => { console.log('تم الاتصال بالخادم'); ws.send('مرحبًا من العميل!');});
ws.on('message', (data) => { console.log('رد الخادم:', data.toString()); ws.close();});
ws.on('close', () => { console.log('تم إغلاق الاتصال');});متى تستخدم ws؟
مكتبة ws مثالية لـ:
- بناء تطبيقات الوقت الفعلي عالية التحميل (أنظمة الدردشة، الألعاب عبر الإنترنت).
- بث البيانات في الوقت الفعلي (بيانات الأسهم، تدفقات IoT).
- أنظمة الإشعارات والتنبيهات.
- العمل التعاوني (التحرير المشترك، لوحات المهام).
- الخوادم التي تعمل في مجموعة أو تحت PM2.
إذا كنت بحاجة إلى مكتبة WebSocket بسيطة وسريعة وموثوقة لـ TypeScript/Node.js — فإن ws هي المعيار الفعلي (de-facto).