#P1535
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 طراحی شده است. فرایند به صورت زیر انجام میشود:
- ارسال پینگ (پیام ping:test) به کانال داخلی
asterisk_socket.
- دریافت پاسخ از سرویس (پیام pong) و محاسبهی اختلاف زمان بین ارسال و دریافت.
- بازگرداندن نتیجه به صورت JSON همراه با فیلد
latency_ms برحسب میلیثانیه.
- در صورت خطا در اتصال وبسوکت، کد ۵۰۴ برگردانده میشود.
پارامترهای ورودی
| نام |
محل |
نوع |
الزامی |
توضیح |
| 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 میباشد. عدم وابستگی به کش، امنیت سطح نقش و ثبت ممیزی بلادرنگ باعث میشود که این مسیر برای پایش زنده زیرساخت ارتباطی سیستم بسیار کارآمد باشد.