🚀 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 را امتحان کنید. ما فکر می کنیم شما عاشق سرعت و کارآیی خواهید بود!