عن المشروع
Nano هي مكتبة شبكية لخوادم الألعاب بلغة Go، سهلة الاستخدام وسريعة وخفيفة. توفر بنية شبكية أساسية ومجموعة من الأدوات والمكتبات التي تساعد المطورين على تجنب العمل المتكرر للمنطق الأساسي الشائع. الهدف هو تحسين كفاءة التطوير من خلال إزالة الحاجة إلى قضاء الوقت في برمجة الشبكات المتكررة.
تم تصميم Nano لتطبيقات جانب الخادم مثل الألعاب في الوقت الفعلي والألعاب الاجتماعية وألعاب الهاتف المحمول وغيرها، بجميع الأحجام.
## كيفية بناء نظام باستخدام Nano
تطبيق Nano هو مجموعة من المكونات، والمكون هو حزمة من المعالجات. بمجرد تسجيل مكون في Nano، فإنه يسجل جميع الطرق التي يمكن تحويلها إلى معالجات في حاوية خدمة Nano. يتم الوصول إلى الخدمات بواسطة `Component.Handler`، ويتم استدعاء المعالج عندما يطلب العميل. يتلقى المعالج معلمتين أثناء معالجة الرسالة:
- `*session.Session`: يتوافق مع العميل الذي يطبق هذا الطلب أو الإشعار.
- `*protocol.FooBar`: حمولة الطلب.
بعد معالجة المنطق، يمكنك الرد أو دفع الرسائل إلى العميل عبر `session.Response(payload)` و `session.Push('eventName', payload)`، أو إرجاع خطأ عند تلقي بيانات غير متوقعة.
يتضمن Nano حلاً مدمجًا للأنظمة الموزعة، مما يسهل إنشاء خوادم ألعاب موزعة. راجع العرض التوضيحي للدردشة الموزعة في دليل examples/cluster. يمكنك بدء مجموعة من تطبيقات Nano كوكلاء لإرسال الرسائل إلى الخوادم الخلفية.
بالنسبة للمهام غير المتزامنة، يوفر Nano `nano.Invoke` للتعامل مع النتائج في goroutine المنطقي الرئيسي، كما هو موضح في المثال.
## المستندات
- الإنجليزية: البدء، ضغط المسارات، بروتوكول الاتصال، أنماط التصميم، مرجع API (الخادم)، تكامل Lua (غير مكتمل).
- 简体中文: 如何构建你的第一个nano应用, 路由压缩, 通信协议, API参考(服务器), 如何将lua脚本集成到nano组件中(未完成).
## الموارد
- عملاء JavaScript: nano-websocket-client, nano-egret-client.
- TypeScript/cocos-creator: nano-client-ts.
- العروض التوضيحية: غرفة دردشة في 100 سطر، عرض tadpole، ومشروع Sichuan Mahjong كامل (nanoserver).
## المجتمع
- مجموعة QQ ممتلئة؛ تواصل عبر WeChat `gsw_945` (ملاحظة `nano加群`).
- Reddit: nanolabs.
## حالات ناجحة
- 空来血战 (fir.im/tios).
## إصدار Go
> go1.8
## التثبيت
```bash
go get github.com/lonng/nano
# dependencies
go get -u github.com/pingcap/check
go get -u github.com/pingcap/errors
go get -u github.com/urfave/cli
go get -u google.golang.org/protobuf/proto
go get -u github.com/gorilla/websocket
go get -u google.golang.org/grpc
```
## Protocol Buffers
قم بتنزيل protoc من https://github.com/protocolbuffers/protobuf/releases، ثم قم بتثبيت protoc-gen-go و protoc-gen-go-grpc و delve.
## الاختبار
```bash
go test -v ./...
```
## القياس المرجعي
مثال: PingPong على Windows 10، i5-6500 3.2GHz 4 Core/1000-Concurrent => IOPS 11W (Average). شغّل باستخدام `cd ./benchmark/io && go test -v -tags "benchmark"`.
## الترخيص
MIT License.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.