برنامه نویسی

🚀 SOCKUDO: وب سایت های سازگار با فشار ، سازگار با فشار با زنگ زدگی!

پرچم

سلام devs! 👋

آیا به دنبال سرور WebSockets با کارایی بالا ، کارآمد و مقیاس پذیر هستید که با راه اندازی مشتری Laravel Echo یا Pusher Client خود به خوبی بازی می کند؟ سلام به جوراب! 🎉

Sockudo یک سرور کاملاً جدید WebSockets است که کاملاً در Rust 🦀 نوشته شده است ، که از زمین طراحی شده است تا جایگزینی قوی و یکپارچه برای خدماتی مانند Pusher باشد ، به خصوص اگر در اکوسیستم Laravel باشید. این از عملکرد باورنکردنی ، ایمنی حافظه و همزمان Rust برای ارائه یک راه حل ارتباطی در زمان واقعی بالا استفاده می کند.

🔥 چرا جوراب؟ زیر کاپوت چیست؟

Sockudo فقط یک سرور WebSocket دیگر نیست. این بسته بندی شده با ویژگی هایی است که باعث می شود برنامه های کاربردی در زمان واقعی شما بدرخشند:

  • سازگاری پروتکل کامل فشار: تعویض قطره! یکپارچه با Laravel Echo و سایر کتابخانه های مشتری Pusher (JavaScript ، node.js ، php و موارد دیگر!) کار می کند.
  • ساخته شده با زنگ زدگی: مزایای سرعت ، ایمنی و همزمانی زنگ زدگی را برای تجربه ای با توان بالا و کم تحرک دریافت کنید.
  • معماری مدولار: آیا نیاز به مبادله اجزای دارید؟ طراحی Sockudo این کار را آسان می کند.
  • مقیاس افقی خارج از جعبه: آداپتورهای داخلی برای Redis ، Redis Cluster و NATS به این معنی است که می توانید با رشد برنامه خود مقیاس کنید.
  • مدیریت برنامه انعطاف پذیر: برای مدیریت تنظیمات برنامه خود از حافظه ، MySQL و DynamoDB پشتیبانی می کند.
  • پشتیبانی کانال غنی: کانال های خصوصی عمومی ، خصوصی ، حضور و حتی رمزگذاری شده همه پشتیبانی می شوند.
  • سرفه های وب: هنگام اشغال یا خالی شدن کانال ها ، درخواست خود را در حلقه نگه دارید. می توانید انواع رویداد مانند member_addedبا member_removedوت subscription_countبشر
  • نظارت بر عملکرد: نقطه پایانی معیارهای پرومتئوس (یکپارچه)/metrics) برای توجه به اتصالات فعال ، آمار پیام ، استفاده از حافظه و موارد دیگر.
  • محدود کردن نرخ: از سرور خود در برابر سوءاستفاده با محدود کردن نرخ قابل تنظیم محافظت کنید (از REDIS پشتیبانی می کند).
  • ذخیره سازی: حافظه و ارائه دهندگان حافظه پنهان Redis برای سرعت بخشیدن به همه چیز.
  • احراز هویت: کانال های خود را با تأیید اشتراک قوی و تأیید اعتبار کاربر ایمن کنید.

پشته فنی

Sockudo از یک پشته مدرن و قدرتمند استفاده می کند:

  • هسته: زنگ زدگی
  • آداپتورهای مقیاس پذیر: Redis ، Redis Cluster ، Nats
  • مدیریت برنامه باکتری: در حافظه ، mysql ، dynamodb
  • ذخیره سازی: در حافظه ، redis
  • معیارها: پرومتئوس
  • صف (برای وب سایت ها ، و غیره): redis ، sqs

🚀 شروع سریع – بلند شوید و اجرا کنید!

آیا می خواهید برای چرخش جوراب بخورید؟ آسان است:

پیش نیازها:

  • زنگ زدگی (1.85 یا جدیدتر)
  • redis (اختیاری ، برای مقیاس گذاری)

کلون و ساخت:

git clone https://github.com/RustNSparks/sockudo.git
cd sockudo
cargo build --release
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

دویدن!:

./target/release/sockudo
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

این کار با پیکربندی پیش فرض در حافظه ، جوراب را شروع می کند.

⚙ پیکربندی – متناسب با نیاز خود

Sockudo بسیار انعطاف پذیر است. می توانید آن را از طریق a پیکربندی کنید config.json پرونده یا استفاده از متغیرهای محیط.

در اینجا نگاهی اجمالی به آنچه config.json ممکن است برای مدیریت برنامه و تنظیم آداپتور به نظر برسد:

{
  "app_manager": {
    "driver": "memory", // Or "mysql", "dynamodb"
    "array": { // Used if driver is "memory"
      "apps": [
        {
          "id": "demo-app",
          "key": "demo-key",
          "secret": "demo-secret",
          "max_connections": "1000", // Can be a string or number
          "enable_client_messages": true,
          "max_client_events_per_second": "200" // Can be a string or number
        }
      ]
    }
  },
  "adapter": {
    "driver": "redis", // Or "nats", "local"
    "redis": {
      "requests_timeout": 5000,
      "prefix": "sockudo",
      "redis_pub_options": {
        "url": "redis://127.0.0.1:6379"
      },
      "redis_sub_options": {
        "url": "redis://127.0.0.1:6379"
      }
    }
  },
  "port": 6001, // Default WebSocket port
  "metrics": {
    "enabled": true,
    "port": 9601 // Default metrics port
  }
}
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

(برای همه گزینه های موجود ، بررسی کنید options.rs در پروژه!)

یا ، از متغیرهای محیط برای تنظیم سریع استفاده کنید:

export PORT=6001
export ADAPTER_DRIVER=redis
export REDIS_URL=redis://127.0.0.1:6379
./target/release/sockudo
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

integration Laravel؟ مثل کره صاف!

اگر شما یک توسعه دهنده Laravel هستید ، در خانه احساس می کنید. فقط پیکربندی Laravel Echo خود را به روز کنید resources/js/bootstrap.js:

// resources/js/bootstrap.js
import Echo from 'laravel-echo';
import Pusher from 'pusher-js';

window.Pusher = Pusher;
window.Echo = new Echo({
    broadcaster: 'pusher',
    key: import.meta.env.VITE_PUSHER_APP_KEY,
    wsHost: import.meta.env.VITE_PUSHER_HOST ?? window.location.hostname,
    wsPort: import.meta.env.VITE_PUSHER_PORT ?? 6001, // Point to Sockudo's port
    forceTLS: (import.meta.env.VITE_PUSHER_SCHEME ?? 'http') === 'https',
    disableStats: true,
    cluster: import.meta.env.VITE_PUSHER_APP_CLUSTER ?? 'mt1', // Sockudo uses 'mt1' as a default or your app ID
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

و شما .env پرونده:

BROADCAST_DRIVER=pusher
VITE_PUSHER_APP_ID=demo-app       # Your Sockudo App ID
VITE_PUSHER_APP_KEY=demo-key      # Your Sockudo App Key
VITE_PUSHER_APP_SECRET=demo-secret  # Your Sockudo App Secret
VITE_PUSHER_HOST=localhost
VITE_PUSHER_PORT=6001
VITE_PUSHER_SCHEME=http
VITE_PUSHER_APP_CLUSTER=mt1       # Or your Sockudo App ID
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

🤝 با مشتری های Pusher مورد علاقه خود کار می کند

از آنجا که Sockudo سازگار با Pusher است ، می توانید از کتابخانه های مشتری استاندارد Pusher در JavaScript ، node.js ، php و غیره استفاده کنید ، با اشاره به ساده آنها به نمونه سرور Sockudo.

مثال (JavaScript):

const pusher = new Pusher('demo-key', { // Your Sockudo App Key
  wsHost: 'localhost',
  wsPort: 6001,
  enabledTransports: ['ws', 'wss'],
  disableStats: true,
  forceTLS: false,
});

const channel = pusher.subscribe('my-channel');
channel.bind('my-event', function(data) {
  console.log('Received event:', data);
});
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

📈 آماده مقیاس؟

Sockudo برای رشد ساخته شده است:

  • مقیاس بندی افقی: آداپتور Redis یا NATS را به راحتی پیکربندی کنید.
  • مدیریت برنامه: از MySQL یا DynamoDB برای مدیریت معتبر برنامه های آماده و آماده تولید استفاده کنید.

🔗 عمیق تر شیرجه بزنید و مشارکت کنید!

Sockudo یک پروژه منبع باز است که تحت AGPL 3.0 مجوز دارد. ما از دیدن نحوه استفاده جامعه و بهبود آن هیجان زده هستیم!

  • ⭐ ما را در GitHub ستاره کنید: Rustnsparks/Sockudo
  • 📖 اسناد کامل را بررسی کنید: sockudo.app
  • 🤔 سوال یا بازخورد دارید؟ مسئله ای را در مورد GitHub باز کنید!

اگر به دنبال یک سرور WebSocket WebSocket عملکردی ، مدرن و بسیار سازگار هستید ، به خصوص اگر با Rust یا Laravel کار می کنید ، Sockudo را امتحان کنید. ما فکر می کنیم شما عاشق سرعت و کارآیی خواهید بود!

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا