Twilio Conversations 클라이언트 복원 설정

Twilio Conversations SDK 2.0 릴리스에는 클라이언트를 생성하고 이벤트 핸들러를 설정하는 새로운 방법이 있습니다. 문서에 명시된 바와 같이 이전 버전과 달리 클라이언트가 제대로 초기화되었는지 확인하기 위해 생성될 때 stateChanged 이벤트가 실행될 때까지 기다렸다가 전달된 상태를 확인하여 초기화가 완료되었는지 확인해야 합니다.

import { Client } from '@twilio/conversations';

const client = new Client(token);

// Before you use the client, subscribe to the `'stateChanged'` event and wait 
// for the `'initialized'` state to be reported.
client.on('stateChanged', (state) => {
  if (state === 'initialized') {
    // Use the client
  }
}


일시적으로 신뢰할 수 없는 연결이 있는 경우 어떻게 해야 합니까? Chrome의 네트워크 탭에서 네트워크 품질을 느리게 변경하기만 하면 Twilio 클라이언트가 초기화를 거부하고 그게 다였습니다.

프로세스를 좀 더 탄력적으로 만들기 위해 클라이언트가 성공적으로 초기화될 때 해결되는 약속 내에서 초기화 이벤트를 래핑하고 그렇지 않으면 지수 백오프 약속을 사용하여 클라이언트를 재생성하려고 시도하는 함수를 작성했습니다.

//wait is a helper function that will wait a given number of seconds.
const wait = (ms) => new Promise((res) => setTimeout(res, ms));

const createTwilioClientWithRetries = (token, depth = 0) => {
    return new Promise((resolve, reject) => {
        //Create a new Twilio Client for the token.
        const twilioClient = new Client(token);

        twilioClient.on('stateChanged', async (state) => {
            try {
                if (state === 'initialized') {
                    resolve(twilioClient);
                }
                if (state === 'failed') {
                    if (depth > 5) {
                        throw new Error("Too many retries");
                    }
                    else {
                        dispatch(setError({
                            type: TWILIO_TOKEN_FAILURE,
                            message: "Twilio Token Error"
                        }));
                        await wait(2 ** depth * 10);
                        return await createTwilioClientWithRetries(token, depth + 1);
                    }
                }
            } catch (err) {
                reject("Too many retries");
            }
        });         
    });
}


처음에는 다음 반복을 호출하기 전에 await twilioClient.shutdown()을 사용하여 클라이언트를 종료하려고 시도했지만 어떤 이유로 나중에 클라이언트의 추가 인스턴스를 생성하지 못하게 됩니다.

재미있게 보내세요!

퍼머링크: https://www.estebansastre.com/create-twilio-client-join-conversation/

좋은 웹페이지 즐겨찾기