انتقل إلى المحتوى
use-cases / a-progress-bar-your-boss-can-spectate / hero
PIPE · ?PROGRESS · SSE

شريط تقدّم يستطيع مديرك مشاهدته دون انضمام

تُشغّل هجرة من ثماني ساعات. خمسة أشخاص يريدون حالةً دون استهلاك خانة مستقبِل أو مقاطعة البثّ. أضف ?progress إلى رابط الأنبوب. كل من يفتحه يحصل على لوحة HTML مباشرة — البايتات المنقولة، السرعة الحاليّة، الزمن المتبقّي، انتقالات الحالة. الهجرة تعمل بأقصى سرعة بصرف النظر عن عدد العيون التي تشاهد.

اقرأ توثيق Pipe progress
use-cases / a-progress-bar-your-boss-can-spectate / mechanism

كيف يصبح مُعامل استعلام لوحةً مباشرة

?progress قراءة منفصلة على مسار الأنبوب تُصغي إلى حالة النقل دون المطالبة بخانة مستقبِل. الهجرة لا تلاحظها. المتصفّح يرى لوحة HTML؛ curl يرى تغذية SSE نظيفة.

SPECTATOR TIMELINEZERO RECEIVER SLOTS
T+0 min
BOSS OPENS URL

She pastes the pipe URL with ?progress into her phone browser. The HTML dashboard appears instantly — state: waiting, 0% — no install, no login, no receiver slot consumed.

T+22 min
STREAM IS LIVE

SSE pushes a state: streaming event. The progress bar snaps to 22%, bytes tick up, MB/s settles at 118. The dashboard updates itself every 250 ms without a single page reload.

T+4 h
BOSS GOES TO BED

She closes the tab. Her spectator connection drops. The migration doesn't notice — it was never in the data path. The sender and its one real receiver carry on.

T+8 h
WAKES TO 100%

She reopens the URL at sunrise. The dashboard shows a done event: 7.6 GB transferred, 8h 2m, no errors. Server-side state survives the refresh — latecomers always see the final line.

T+8h 4m
SENDS THE ACK

She forwards the URL to the team Slack. Three engineers open it and see the same done state. No status thread to close, no Grafana panel to un-star. One URL, five witnesses, zero interruptions.

spectate.sh
# 1. المرسل — ترحيل ثماني ساعات. نفس الحال دائماً.
tar czf - /var/lib/postgres | curl -T - "$PIPE/api/v1/pipe/migration"

# 2. المتلقي — العميل الوحيد الذي يهم للضغط العكسي.
curl "$PIPE/api/v1/pipe/migration" | tar xzf - -C /restore

# 3. الرئيسة تفتح الرابط على هاتفها. لوحة معلومات HTML. بلا إعداد.
# => https://pipe.hoody.com/api/v1/pipe/migration?progress

# 4. تريد SSE لروبوت Slack؟ نفس الرابط، قبول مختلف.
curl -N -H "Accept: text/event-stream" \
  "$PIPE/api/v1/pipe/migration?progress" \
  | grep -E '^event: (progress|state|done)'
# event: state    \n data: ["state":"streaming","receivers":1]
# event: progress \n data: ["bytes":5046464512,"mbps":118,"etaSec":840]
# event: done     \n data: ["bytes":8160000000,"durationSec":28800]

ثلاثة أنواع أحداث SSE. state للانتقالات (idle → waiting → streaming → complete)، progress كل 250 ms أثناء تدفّق البايتات (bytesTransferred، السرعة، الزمن المتبقّي)، done مرّة واحدة في النهاية بإحصاءات نهائيّة. حتى خمسون متفرّجاً لكل مسار، TTL الاتّصال ثلاثون دقيقة، بقاء ثلاثين ثانية بعد النقل ليرى المتأخّرون سطر النجاح.

use-cases / a-progress-bar-your-boss-can-spectate / audience

ثلاثة جماهير، رابط واحد

نفس نقطة نهاية ?progress تخدم تبويب متصفّح وأنبوب curl وصفحة حالة تستطلع في الخلفيّة. لا أحد منهم يُبطئ النقل.

use-cases / a-progress-bar-your-boss-can-spectate / punchline

مشاهدة الهجرة هي رابطها الخاصّ. الهجرة لا تلاحظ.

0 خانات مستقبِل مُستخدَمةحتى 50 متفرّجاً لكل مسار
هجرةمرسِل واحد، مستقبِل واحد، عرض نطاق كامل
متفرّجون12 عيناً على لوحة المدير، 0 ضغط عكسي
  • لا قناة Slack تتفقّدها
  • لا لوحة Grafana توصلها
  • لا نقطة نهاية تقدّم تكتبها
use-cases / a-progress-bar-your-boss-can-spectate / replaces

ما يستبدله هذا

كل فريق لديه طريقة للإجابة عن «إلى أين وصلت؟». معظم تلك الطرق تُكلّف خدمةً تشغّلها أو لوحة توصلها أو قناة محادثة تتفقّدها. مُعامل استعلام على رابط الأنبوب لا يُكلّف شيئاً من ذلك.

  • تحديثات قناة Slack #migrationsإنسان يكتب نِسَباً مئويّةً كل خمس دقائق
  • لوحات Grafanaمُصدِّر، مسح Prometheus، لوحة لصيانتها
  • نقاط نهاية تقدّم مُخصّصةمسار مُخصّص، مخطّط مُخصّص، خطأ احتفاظ مُخصّص
  • Tmux-share عبر SSHوصول حصن لمشاهدة رقم يتحرّك
  • لوحات مقاييس Datadogوكيل لكل مُضيف وتسعير لكل مقياس لنقلٍ واحد
  • ‹هل وصلنا بعد› pingsخمسة زملاء يسألون نفس السؤال على خيوط مختلفة
use-cases / a-progress-bar-your-boss-can-spectate / cta

أرسل الرابط. توقّف عن إرسال التحديثات.

اقرأ دليل Pipe API
use-cases / a-progress-bar-your-boss-can-spectate / related

اقرأ الآخرين