تطوير الويب 1 دقيقة للقراءة 1,002 مشاهدات

بناء لوحات معلومات فورية مع React وWebSockets

أنشئ لوحات معلومات تفاعلية فورية باستخدام React وWebSockets وChart.js. مثالية لتطبيقات المراقبة والتحليلات.

Dashboard analytics

بناء لوحات معلومات فورية

أنشئ لوحات معلومات تتحدّث مباشرةً باستخدام React و WebSockets.

خادم WebSocket (Node.js)

const WebSocket = require('ws');
const wss = new WebSocket.Server({ port: 8080 });

wss.on('connection', (ws) => {
    // Send data every second
    const interval = setInterval(() => {
        ws.send(JSON.stringify({
            cpu: Math.random() * 100,
            memory: Math.random() * 100,
            requests: Math.floor(Math.random() * 1000),
            timestamp: new Date().toISOString(),
        }));
    }, 1000);

    ws.on('close', () => clearInterval(interval));
});

مكوّن لوحة المعلومات في React

import { useState, useEffect } from 'react';
import { Line } from 'react-chartjs-2';

function Dashboard() {
    const [metrics, setMetrics] = useState([]);

    useEffect(() => {
        const ws = new WebSocket('ws://localhost:8080');

        ws.onmessage = (event) => {
            const data = JSON.parse(event.data);
            setMetrics(prev => [...prev.slice(-59), data]);
        };

        return () => ws.close();
    }, []);

    return (
        <div className="grid grid-cols-2 gap-4">
            <MetricCard title="CPU" value={metrics[metrics.length - 1]?.cpu} />
            <MetricCard title="Memory" value={metrics[metrics.length - 1]?.memory} />
            <Line data={chartData} options={chartOptions} />
        </div>
    );
}

مكوّن بطاقة المقياس

function MetricCard({ title, value }) {
    return (
        <div className="bg-white rounded-lg shadow p-4">
            <h3 className="text-gray-500 text-sm">{title}</h3>
            <p className="text-3xl font-bold">{value?.toFixed(1)}%</p>
        </div>
    );
}

اجمع بين WebSockets ومكتبات الرسوم البيانية لتصوّرات فورية قوية.

مشاركة هذه المقالة:
ES
كتبه

Edrees Salih

مهندس برمجيات متكامل يتمتع بخبرة 9 سنوات. شغوف ببناء حلول قابلة للتطوير ومشاركة المعرفة مع مجتمع المطورين.

عرض الملف الشخصي

التعليقات (0)

اترك تعليقًا

لن يتم نشر بريدك الإلكتروني.

لا توجد تعليقات بعد. كن أول من يشارك أفكاره!

مقالات ذات صلة

مقالات ذات صلة

هل تحتاج مساعدة في مشروعك؟

احجز استشارة مجانية لمدة 30 دقيقة لمناقشة تحدياتك التقنية واستكشاف الحلول معًا.