Skip to main content
#P1536

GET /asterisk/websocket/test

Route Info

Method Endpoint Controller Middleware Purpose
GET /api/v2/asterisk/websocket/test AsteriskAmiController@testWebSocketConnection authWithJwt تست و بررسی سلامت اتصال وب‌سوکت به سیستم AMI و محاسبه تاخیر (Ping/Pong Latency)

منطق عملکرد تابع

تابع testWebSocketConnection به منظور بررسی در دسترس بودن و پایداری ارتباطات بلادرنگ با وب‌سوکت داخلی ماژول Asterisk طراحی شده است. فرایند به صورت زیر انجام می‌شود:

  1. ارسال پینگ (پیام ping:test) به کانال داخلی asterisk_socket.
  2. دریافت پاسخ از سرویس (پیام pong) و محاسبه‌ی اختلاف زمان بین ارسال و دریافت.
  3. بازگرداندن نتیجه به صورت JSON همراه با فیلد latency_ms برحسب میلی‌ثانیه.
  4. در صورت خطا در اتصال وب‌سوکت، کد ۵۰۴ برگردانده می‌شود.

پارامترهای ورودی

نام محل نوع الزامی توضیح
none - - - این مسیر نیازی به ورودی ندارد.

ساختار خروجی

{
  "status": true,
  "message": "WebSocket connection healthy",
  "data": {
    "ping_sent": "2025-11-23T15:20:42.002+03:30",
    "pong_received": "2025-11-23T15:20:42.135+03:30",
    "latency_ms": 133
  }
}

نکات امنیتی

  • این متد صرفاً برای کاربران با نقش system_monitor، system_admin یا developer در دسترس است.
  • در صورت تشخیص تعداد درخواست‌های متوالی (بیش از ۵ بار در ۳۰ ثانیه)، به مدت ۶۰ ثانیه از دسترسی به این مسیر جلوگیری می‌شود (Throttle Policy).
  • هیچ اطلاعات حساس از سرویس در پاسخ برگردانده نمی‌شود.

عملکرد

  • میانگین تاخیر در ارتباط با وب‌سوکت: ۱۰۰–۲۰۰ میلی‌ثانیه.
  • تست صرفاً به صورت بلادرنگ اجرا شده و از کش استفاده نمی‌کند.

Dependencies

  • use App\Services\WebSocketGateway;
  • use App\Helpers\Functions;
  • use Carbon\Carbon;

کدهای خطا

کد شرح منبع
401 توکن JWT نامعتبر یا منقضی Authentication
403 کاربر فاقد مجوز برای دسترسی به تست وب‌سوکت Authorization
504 عدم پاسخ از وب‌سوکت در بازه‌ی ۲ ثانیه Connection Timeout

پیشنهادهای امنیتی

  • فعال سازی TLS برای کانال وب‌سوکت wss:// جهت رمزنگاری پینگ/پُنگ.
  • افزودن Signaling Token منحصربه‌فرد برای تست‌های برخط.

پیشنهادهای توسعه‌ای

  • امکان نمایش نمودار زمان پاسخ (Log Latency Chart) در داشبورد DevOps.
  • افزودن پارامتر اختیاری count برای اجرای تست تکرارشونده (مانند ۵ بار پیاپی).
  • ذخیره میانگین تاخیر در Redis برای تحلیل پایداری شبکه.

ممیزی و لاگ‌ها

  • ثبت در جدول ami_websocket_logs به‌صورت روزانه با فیلدهای operator_id، latency، ip_address.
  • نمایش تاریخچه پینگ‌ها در پنل پشتیبان زیر منوی Monitoring > AMI Ping.

جمع‌بندی

testWebSocketConnection ابزاری کاملاً سبک برای اطمینان از سلامت وب‌سوکت و کاهش خطاهای زمانی در ارتباطات بلادرنگ AMI می‌باشد. عدم وابستگی به کش، امنیت سطح نقش و ثبت ممیزی بلادرنگ باعث می‌شود که این مسیر برای پایش زنده زیرساخت ارتباطی سیستم بسیار کارآمد باشد.