يتيح هذا المستودع استخدام netcode.io عبر ملحقات المتصفح، قبل اعتماده في المتصفحات. يتيح netcode.io الاستخدام الآمن لـ UDP في متصفحات الويب بغرض دعم ألعاب HTML5 متعددة اللاعبين. يمكن العثور على مزيد من المعلومات حول netcode.io هنا.
يتم دعم netcode.io في المتصفحات التالية عبر الملحقات:
يعد دعم الأجهزة المحمولة مستحيلًا بشكل أساسي حتى يظهر دعم netcode.io في المتصفحات محليًا، حيث لا تدعم منصات الأجهزة المحمولة الامتدادات أو الرسائل الأصلية.
لكي يعمل هذا، يتطلب الأمر تثبيت كل من ملحق المتصفح ومساعد التطبيق الأصلي الذي يقوم بإجراء اتصال netcode.io الفعلي. يستخدم الملحق واجهات برمجة تطبيقات المراسلة الأصلية المتوفرة في المتصفحات لإتاحة netcode.io عبر المساعد.
لتجربة ذلك في متصفحك، قم أولاً ببناء المساعد netcode.io.host:
go get github.com/wirepair/netcode
go build
- لنظام التشغيل الحاليenv GOOS=windows GOARCH=amd64 go build
- للإنشاء لنظام التشغيل Windows (نمط Linux لتعيين متغيرات البيئة)env GOOS=linux GOARCH=amd64 go build
- للإنشاء لنظام Linux (نمط Linux لتعيين متغيرات البيئة)env GOOS=darwin GOARCH=amd64 go build
- للإنشاء لنظام التشغيل Mac (نمط Linux لتعيين متغيرات البيئة) ./netcode.io.host
يجب أن يتم تشغيل هذا بدون أخطاء، وأن يتم تثبيته كملحق مراسلة أصلي.
بعد الانتهاء من ذلك، قم بإضافة دليل browserwebext
كملحق غير مضغوط.
تم توفير واجهة برمجة التطبيقات لعملاء Javascript كرمز window.netcode
. يمكنك التحقق من توفر netcode.io باستخدام النمط التقليدي if (window.netcode) { ... }
.
يوفر window.netcode
وظيفة واحدة: createClient(callback)
:
يقوم بإنشاء عميل netcode.io جديد يمكن استخدامه لاتصالات UDP الآمنة باستخدام بروتوكول netcode.io. رد الاتصال يكون على شكل callback(err, client)
. إذا تم تعيين err
، فقد حدث خطأ أثناء إنشاء العميل (وسيصبح client
خاليًا). وإلا فسيتم تعيين client
ويكون err
فارغًا. العميل الذي تم إرجاعه هو مثيل لـ Client
.
يجب أن يكون protocol
إما ipv4
أو ipv6
ويحدد نوع عنوان الخادم الذي يمكنك الاتصال به.
حدود:
protocol
: إما ipv4
أو ipv6
.callback
: رد اتصال في النموذج callback(err, client)
حيث يكون err
إما null
أو مثيلًا لـ Error
، ويكون client
إما null
أو مثيلًا Client
. يتحقق لمعرفة ما إذا كان المستخدم قد قام بتثبيت مساعد netcode.io. رد الاتصال يكون على شكل callback(err, isPresent)
، حيث يكون err
إما null
أو مثيلًا Error
. إذا لم يكن هناك خطأ، فإن isPresent
هو قيمة منطقية تشير إلى ما إذا كان المساعد الأصلي قد تم تثبيته أم لا.
إذا لم يتم تثبيت مساعد netcode.io، فيجب عليك توجيه المستخدم إلى https://github.com/RedpointGames/netcode.io-browser/releases/tag/latest حيث يمكن تثبيت مساعد netcode.io بسهولة في نقرات قليلة.
حدود:
callback
: رد اتصال في النموذج callback(err, isPresent)
حيث يكون err
إما null
أو مثيلًا لـ Error
، ويكون isPresent
إما null
أو منطقيًا. يضبط معدل التجزئة لعميل netcode.io، معبرًا عنه بعدد مرات التجزئة في الثانية لاستلام وإرسال الحزم. معدل القراد للعملاء الافتراضي هو 60
؛ أي 60 مرة في الثانية.
حدود:
tickRate
: عدد صحيح يساوي أو أكبر من 1
.callback
: رد اتصال في النموذج callback(err)
حيث يكون err
إما null
أو مثيل لـ Error
. يتصل بخادم netcode.io باستخدام الرمز المميز المحدد. يجب أن يكون token
مثيلاً لـ Uint8Array
ويمثل رمز netcode.io المستلم من خادم المصادقة.
لا يمكنك استخدام netcode.io لإرسال حزم UDP إلى عناوين IP عشوائية؛ بدلاً من ذلك، يجب أن يكون لديك خادم مصادقة يستخدم مكتبة netcode.io (أو تطبيق متوافق) يمكنه إنشاء الرموز المميزة وتوقيعها باستخدام قائمة عناوين IP لخادم اللعبة ومفتاح خاص مشترك بين خادم المصادقة وخوادم الألعاب.
في معظم السيناريوهات الشائعة، سيوفر خادم المصادقة الخاص بك الرمز المميز كجزء من طلب AJAX. إذا كنت تستخدم نظام حساب مستخدم، فستوفر الرموز المميزة بعد تسجيل دخول المستخدم إلى لعبتك، مع الإشارة إلى الخادم المصرح للعميل بالاتصال به.
حدود:
token
: مثيل Uint8Array
الذي يحتوي على بيانات الرمز المميز.callback
: رد اتصال في النموذج callback(err)
حيث يكون err
إما null
أو مثيل لـ Error
. يرسل حزمة إلى الخادم المتصل باستخدام packetBuffer
كبيانات. يجب أن يكون packetBuffer
مثيلًا لـ Uint8Array
.
حدود:
token
: مثيل Uint8Array
الذي يحتوي على بيانات الحزمة المراد إرسالها.callback
: رد اتصال في النموذج callback(err)
حيث يكون err
إما null
أو مثيل لـ Error
. إرجاع الحالة الحالية للعميل كسلسلة. الحالة التي تم إرجاعها هي واحدة من: connected
أو connectionDenied
أو connectionRequestTimeout
أو connectionResponseTimeout
أو connectionTimedOut
أو connectTokenExpired
أو disconnected
أو invalidConnectToken
ConnectToken أو sendingConnectionRequest
أو sendingConnectionResponse
أو destroyed
.
حدود:
callback
: رد اتصال في النموذج callback(err, state)
حيث يكون err
إما null
أو مثيلًا لـ Error
. state
إما null
(في حالة وجود خطأ) أو إحدى الحالات المذكورة أعلاه.يدمر العميل، ويفصله عن الخادم وينظف أي موارد مرتبطة به. بمجرد تدمير العميل، لا يمكن إعادة استخدامه.
حدود:
callback
: رد اتصال في النموذج callback(err)
حيث يكون err
إما null
أو مثيل لـ Error
. يضيف مستمع الحدث إلى العميل. type
الوحيد المدعوم حاليًا هو receive
، والذي يتم تشغيله عندما يتلقى العميل حزمة من الخادم.
receive
رد الاتصال يكون على شكل callback(clientId, buffer)
حيث clientId
هو معرف العميل الصادر في الأصل عن خادم المصادقة والمخزن buffer
هو الحزمة المستلمة كمثيل لـ Uint8Array
.
حدود:
type
: أحد الأنواع المدعومة المذكورة أعلاه.callback
: رد اتصال يختلف شكله حسب type
. يتم توفير رمز ملحق المضيف هذا بموجب ترخيص MIT.
الأهداف الأساسية لهذا المشروع حاليا هي:
يجب أن تكون جميع طلبات السحب متاحة بموجب ترخيص MIT.