توکن اتصال خصوصی
GET/auth/ws/token/
این API یک توکن JWT برای اتصال احراز هویتشده به وبسوکت تولید میکند. این توکن فقط برای کانالهای خصوصی لازم است؛ کانالهای عمومی به توکن نیاز ندارند.
تفاوت دو مقدار احراز هویت:
| مقدار | از کجا میآید؟ | کاربرد |
|---|---|---|
token | پاسخ همین API | احراز هویت اتصال وبسوکت |
websocketAuthParam | پاسخ پروفایل کاربر | ساخت نام کانال خصوصی |
مراحل استفاده از کانال خصوصی:
- مقدار
websocketAuthParamرا از پاسخ پروفایل کاربر بخوانید. - از این API توکن اتصال بگیرید.
- با مقدار
tokenبه وبسوکت وصل شوید. - در کانال خصوصی مورد نظر با الگوی
private:{channelName}#{websocketAuthParam}عضو شوید.
نکتهها:
- مدت اعتبار توکن اتصال: ۱۲۰۰ ثانیه
- احراز هویت این API با توکن کاربر یا کلید API دارای دسترسی خواندن انجام میشود.
- در کلاینتهای Centrifugo مقدار
tokenبرگشتی را به گزینه اتصال یا تابعgetTokenبدهید. - در اتصال خام، پیام اتصال خصوصی به شکل
{"connect":{"token":"<CONNECTION_TOKEN>"},"id":1}ارسال میشود. - مقدار
websocketAuthParamتوکن نیست و نیازی به تمدید ندارد.
نمونه درخواست:
curl 'https://apiv2.nobitex.ir/auth/ws/token/' \
-H 'Authorization: Token <USER_TOKEN>'
اتصال با توکن ثابت:
import { Centrifuge } from 'centrifuge';
const client = new Centrifuge('wss://ws.nobitex.ir/connection/websocket', {
token: '<CONNECTION_TOKEN>',
});
client.connect();
دریافت و تمدید خودکار توکن با SDK:
import { Centrifuge, UnauthorizedError } from 'centrifuge';
async function getToken() {
const response = await fetch('https://apiv2.nobitex.ir/auth/ws/token/', {
headers: {
Authorization: 'Token <USER_TOKEN>',
},
});
if (!response.ok) {
if (response.status === 401 || response.status === 403) {
throw new UnauthorizedError();
}
throw new Error(`Unexpected status code ${response.status}`);
}
const data = await response.json();
return data.token;
}
const client = new Centrifuge('wss://ws.nobitex.ir/connection/websocket', {
getToken,
});
client.connect();
اتصال خام با توکن:
{
"connect": {
"token": "<CONNECTION_TOKEN>"
},
"id": 1
}
Request
Responses
- 200
- 401
- 403
- 429
موفق
احراز هویت نامعتبر است
دسترسی لازم برای دریافت توکن وجود ندارد
محدودیت فراخوانی یا اتصال رد شده است