پرش به مطلب اصلی

توکن اتصال خصوصی

GET 

/auth/ws/token/

این API یک توکن JWT برای اتصال احراز هویت‌شده به وب‌سوکت تولید می‌کند. این توکن فقط برای کانال‌های خصوصی لازم است؛ کانال‌های عمومی به توکن نیاز ندارند.

تفاوت دو مقدار احراز هویت:

مقداراز کجا می‌آید؟کاربرد
tokenپاسخ همین APIاحراز هویت اتصال وب‌سوکت
websocketAuthParamپاسخ پروفایل کاربرساخت نام کانال خصوصی

مراحل استفاده از کانال خصوصی:

  1. مقدار websocketAuthParam را از پاسخ پروفایل کاربر بخوانید.
  2. از این API توکن اتصال بگیرید.
  3. با مقدار token به وب‌سوکت وصل شوید.
  4. در کانال خصوصی مورد نظر با الگوی 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

موفق