Twilio Conversations 클라이언트 복원 설정
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/
Reference
이 문제에 관하여(Twilio Conversations 클라이언트 복원 설정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/fr0gs/twilio-conversations-client-resilient-setup-1hal텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)