مشغّلو الخدمات

يتوقع المستخدمون أن تبدأ التطبيقات بشكل موثوق على اتصالات الشبكة البطيئة أو غير المستقرة، أو حتى في حالة عدم الاتصال بالإنترنت. ويتوقعون المحتوى الذي تفاعلوا معه مؤخرًا، مثل مسارات الوسائط أو التذاكر وبرامج الرحلات، لتكون متاحة وقابلة للاستخدام. عندما يتعذّر تنفيذ طلب ما، يتوقع المستخدم أن يخبره التطبيق بذلك بدلاً من بالفشل أو الانهيار بدون قصد. ويريد أن يحدث كل هذا بسرعة. بالنسبة يمكنك أن ترى في الملّي ثانية تصنع الملايين، يمكن أن يؤدي التحسين بمقدار 0.1 ثانية في أوقات التحميل إلى تحسين التحويل بنسبة تصل إلى 10%. عاملو الخدمة هم الأداة التي تتيح لتطبيق الويب التقدّمي (PWA) مستخدميك وتوقعاتهم.

مشغّل الخدمات هو خادم وكيل للبرمجيات الوسيطة، يعمل من جهة الجهاز، بين تطبيق الويب التقدّمي (PWA) والخوادم، والذي يتضمّن كلاً من الخوادم الخاصة بك والخوادم على جميع النطاقات.
يعمل مشغّل الخدمات كبرامج وسيطة بين تطبيق الويب التقدّمي (PWA) والخوادم التي يتفاعل معها

عندما يطلب أحد التطبيقات موردًا مشمولاً في نطاق مشغّل الخدمة، عامل الخدمة يعترض الطلب ويعمل كخادم وكيل للشبكة، حتى إذا المستخدم غير متصل بالإنترنت. ويمكنها بعد ذلك أن يقرر ما إذا كان ينبغي لها عرض المورد من ذاكرة التخزين المؤقت باستخدام واجهة برمجة تطبيقات ذاكرة التخزين المؤقت، وتعرضها من الشبكة كما لو لم تكن هناك أو عامل خدمة نشط أو إنشاؤه من خوارزمية محلية. يتيح لك هذا تقديم تجربة عالية الجودة مماثلة لتجربة التطبيق الأساسي، حتى عندما يكون التطبيق غير متصل بالإنترنت.

تسجيل مشغّل الخدمات

قبل أن يتحكّم عامل الخدمة في صفحتك، يجب أن تكون مسجَّلة في تطبيق الويب التقدّمي (PWA). وهذا يعني في المرة الأولى التي يفتح فيها المستخدم تطبيق الويب التقدّمي (PWA)، جميع شبكته تنتقل الطلبات إلى خادمك مباشرةً لأن عامل الخدمة ليس لديه التحكم في صفحاتك حتى الآن.

بعد التحقّق مما إذا كان المتصفّح متوافقًا مع واجهة برمجة تطبيقات Service Worker API، يمكن لتطبيق الويب التقدّمي (PWA) إجراء ما يلي: تسجيل مشغّل الخدمات. بعد التحميل، يقوم عامل الخدمة بإعداد نفسه بين تطبيق الويب التقدّمي (PWA) والشبكة، واعتراض الطلبات وعرض والردود المقابلة.

if ('serviceWorker' in navigator) {
   navigator.serviceWorker.register("/serviceworker.js");
}
حاوِل تسجيل مشغّل خدمات، وتعرَّف على في أدوات المطوّرين في المتصفّح الذي تستخدمه.

التحقّق مما إذا كان مشغّل الخدمات مسجّلاً

للتأكّد مما إذا كان مشغّل الخدمات مسجَّلاً، استخدِم أدوات المطوّرين في المتصفح المفضل.

في المتصفحات المستندة إلى Chromium وFirefox (مثل Microsoft Edge أو Google Chrome أو إنترنت Samsung):

  1. افتح أدوات المطوّرين، ثم انقر على علامة تبويب التطبيق.
  2. في اللوحة اليمنى، اختَر مشغّلو الخدمات.
  3. تحقَّق من ظهور عنوان URL للنص البرمجي لمشغّل الخدمة مع الحالة "تم التفعيل". (لمزيد من المعلومات، يُرجى الاطّلاع على رحلة المستخدِم). في Firefox، يمكن أن تكون الحالة "قيد التشغيل" أو "متوقف".

في Safari:

  1. انقر على التطوير >. مشغِّلو الخدمات:
  2. ابحث في هذه القائمة عن إدخال يتضمّن المصدر الحالي. النقر على هذا الإدخال يفتح عارضًا على سياق مشغّل الخدمات.
أدوات مطوّري خدمات مشغّلي الخدمات على Chrome وFirefox وSafari.
أدوات مطوّري برامج مشغّلي الخدمات على Chrome وFirefox وSafari.

النطاق

يحدّد المجلد الذي يجلس فيه مشغّل الخدمات نطاقه. مشغّل الخدمات المتواجدة في example.com/my-pwa/sw.js يمكنها التحكم في أي تنقُّل عند أو أسفل مسار my-pwa، مثل example.com/my-pwa/demos/. بإمكان عاملي الخدمة التحكم فقط في العناصر (الصفحات والعاملين، والمشار إليها مجتمعين "العملاء") ضمن نطاقهم. ينطبق هذا النطاق على علامات تبويب المتصفّح ونوافذ تطبيقات الويب التقدّمية (PWA).

يُسمح بعامل خدمة واحد فقط لكل نطاق. عندما يكون مشغّل الخدمات نشطًا وقيد التشغيل، يتوفر مثيل واحد فقط بغض النظر عن عدد العملاء (نوافذ PWA أو علامات تبويب المتصفّح) تكون محفوظة في الذاكرة.

يتميز Safari بإدارة نطاق أكثر تعقيدًا تُعرف باسم الأقسام، وتؤثِّر في كيفية تعمل النطاقات مع إطارات iframe عبر النطاقات. للتعرف على مزيد من المعلومات حول واجهة WebKit يمكنك الرجوع إلى مشاركة المدونة التي تتضمنها.

دورة الحياة

يحدد عاملو الخدمة طريقة تثبيت أجهزتهم بشكل منفصل من تثبيت تطبيق الويب التقدّمي (PWA).

تبدأ دورة حياة عامل الخدمة بتسجيل مشغّل الخدمات. تشير رسالة الأشكال البيانية بعد ذلك، يحاول المتصفح تنزيل ملف عامل الخدمة وتحليله. إذا كان التحليل نجح، تم تنشيط حدث install عامل الخدمة. الحدث install تطلق مرة واحدة فقط.

ويتم تثبيت عامل الخدمة بدون تنبيه، وبدون الحاجة إلى إذن من المستخدم، حتى إذا لم يثبِّت المستخدم تطبيق الويب التقدّمي (PWA) تتوفر واجهة برمجة تطبيقات "مشغّل الخدمات" حتى على الأنظمة الأساسية التي لا تتيح تثبيت تطبيق الويب التقدّمي (PWA)، مثل Safari Firefox على أجهزة سطح المكتب.

بعد التثبيت، يجب تنشيط عامل الخدمة قبل أن يتسنى له ذلك. والتحكم في عملائها، بما في ذلك تطبيق الويب التقدّمي (PWA). عندما يكون عامل الخدمة جاهزًا للتحكم في عملائه، يتم تنشيط حدث activate. ومع ذلك، وبشكل افتراضي، ولن يتمكن عامل الخدمة النشط من إدارة الصفحة التي سجّلها حتى عند الانتقال إلى تلك الصفحة من خلال إعادة تحميل الصفحة أو إعادة فتح تطبيق الويب التقدّمي (PWA).

يمكنك الاستماع إلى الأحداث في النطاق العام لمشغّل الخدمات باستخدام self الكائن:

serviceworker.js

// This code executes in its own worker or thread
self.addEventListener("install", event => {
   console.log("Service worker installed");
});
self.addEventListener("activate", event => {
   console.log("Service worker activated");
});

تعديل مشغّل الخدمات

يتم تحديث مشغِّلي الخدمات عندما يكتشف المتصفِّح وجود عامل تشغيل. التحكم في العميل والإصدار الجديد من ملف عامل الخدمة من الخادم يختلف عن البايت.

بعد إجراء عملية تثبيت ناجحة، ينتظر مشغّل الخدمات الجديد التفعيل حتى ولم يعد عامل الخدمة القديم يتحكم في أي عميل. تُسمى هذه الولاية "قيد الانتظار"، وهذه هي الطريقة التي يضمن بها المتصفح أن نسخة واحدة فقط من تشغيل مشغّل الخدمات في كل مرة.

لن يؤدي إعادة تحميل الصفحة أو إعادة فتح تطبيق الويب التقدّمي (PWA) إلى اتّخاذ مشغّل الخدمات الجديد والتحكم المستمر. يجب على المستخدم إغلاق جميع علامات التبويب والنوافذ أو الخروج منها باستخدام مشغّل الخدمات الحالي ثم العودة لمنح مشغّل الخدمات الجديد والتحكم المستمر. لمزيد من المعلومات، يُرجى الاطّلاع على دورة حياة عاملي الخدمات.

عمر عامل الخدمة

يمكن لمشغّل الخدمات المثبّت والمسجّل إدارة جميع طلبات الشبكة. ضمن نطاقه. يتم تشغيله ضمن سلسلة محادثات خاصة به، مع التفعيل والإنهاء. التحكم فيه من خلال المتصفح، مما يتيح له العمل حتى قبل فتح تطبيق الويب التقدّمي أو بعد إغلاقه. عاملو الخدمة يعملون على سلسلة محادثات خاصة بهم، ولكنهم في حالة ذاكرة قد لا تستمر بين عمليات تشغيل مشغّل الخدمات، لذا تأكد من أن أي شيء تريد إعادة استخدامها لكل عملية تشغيل إما في IndexedDB أو في قاعدة بيانات أخرى مساحة تخزين دائمة.

إذا لم يكن عامل الخدمة قيد التشغيل، يبدأ تشغيل عامل الخدمة عند طلب الشبكة. في نطاقها، أو عندما يتلقى حدث تشغيل مثل أو مزامنة في الخلفية أو رسالة فورية.

يتم إنهاء موظفي الخدمة في حال عدم نشاطهم لبضع ثوان أو في حال أنهم كانوا مشغولين لفترة طويلة جدًا. وتختلف التوقيتات باختلاف المتصفّح. إذا إنهاء تشغيل عامل الخدمة وحدث حدث يؤدي إلى تشغيله، وتتم إعادة تشغيله.

الإمكانات

يستخدم مشغّل الخدمات المسجّل والنشط سلسلة محادثات ذات من سلسلة التعليمات الرئيسية لتطبيق PWA. ومع ذلك، بشكل افتراضي، ملف عامل الخدمة نفسه ليس به أي سلوك. لن يخزن أي محتوى مؤقتًا أو يعرضه والموارد؛ هذه هي الأشياء التي يجب على التعليمات البرمجية القيام بها. ستتعرف على كيفية الفصول التالية.

لا تقتصر إمكانات مشغِّل الخدمات على الخادم الوكيل أو تقديم طلبات HTTP فقط. تتوفّر ميزات أخرى فوقها لأغراض أخرى، مثل الخلفية. وتنفيذ الرموز، والإشعارات الفورية على الويب، ومعالجة الدفعات. سنناقش هذه الإضافات في قسم الإمكانات.

الموارد