Блог

Утас унтах үед чатыг амьд байлгах нь

Mythex-ийн агент нэг хүсэлтэд хэдэн минут ажиллаж болно, мөн та утаснаас үзэж байж магадгүй — утас түгжигдэж, аппаа солих, сүлжээг өөрчлөх замдаа байна. Хоёр алдаа энэ нь буруу болгосон. Нэгд нь чат «хуудас дахин харагдаж байна» гэсэн дохио бүрийг холболт нь үхсэний баталгаа гэж үзэж, «Connecting…» дээр гацах хүртэл давтдаг байсан. Хоёрдугаарт нь шинэ чатын анхны хариултыг унтсан утас буцаж ирэхэд хариултын зөвхөн эхний хэдхэн хэсгийг л харуулдаг байсан, гараар шинэчлэх хүртэл. Хоёулаа засагдсан.

Чат ажиллаж буй эргэлтийг хэрхэн дагадаг вэ

Агент ажиллах явцад чат манай серверүүдээс стрим нээлттэй байлгадаг: алхам бүр — бодол, хэрэгслийн дуудлага, хариултын хэсэг — event хэлбэрээр ирдэг. Стрим тасарвал чат дахин холбогдож, сервер сүүлийн 120 секундын буферээс сүүлийн event-үүдийг дахин тоглуулдаг. Эргэлт дуусахад чат сервероос хадгалагдсан түүхийг мөн асуудаг, мөн харуулсан зүйлээ хадгалсан зүйлтэй тохируулдаг. Сүүлийн алхам стримд алга болсон зүйлийг барьдаг.

Юу ч болохгүй байх үед холболт амьд эсэхийг мэдэхийн тулд сервер 15 секунд тутамд жижиг «ping» илгээдэг.

Алдаа 1: сэрэх нь амьд стримийг устгадаг байсан

Хөтчүүд хуудас дахин харагдахад мэдэгддэг: таб солихын дараа, дэлгэц түгжээгээ тайлсны дараа. Бид үүнийг холболтыг шалгах дохио болгон авч, практикт стримийг таслаад дахин холбогдох — нуугдсан үед үхсэн гэж үзэж байсан.

Утас болон шилжүүлэгдсэн хөтчүүд дээр эдгээр event нь стрим үхэхээс хамаагүй олон удаа гардаг — таб солих бүр, түгжээ тайлах бүр, зарим шилжүүлэгдсэн хөтчүүдэд хэдхэн секунд тутам. Бүр нэг бүр нь сайн ажиллаж байгаа стримийг тасалдаг байв. Чат дахин холбогдож, дахин тоглуулж, дахин тасалдаж, эцэст нь «Connecting…» дээр гацдаг байсан. Дараа нь агент ажиллаж байхад эргэлт дууссан гэж хэлдэг байсан.

Засвар: стримийг ярьж байгаа эсэхээр нь шийд

Чат одоо төсөл бүрийн стрим хамгийн сүүлд ямар нэг зүйл авсан цагийг бүртгэдэг — event болон 15 секундын ping хоёуланг. «Дахин харагдаж байна» дохио зөвхөн 25 секундын турш чимээгүй байсан стримийг тасалдаг: ping-ийн интервал болон удаан сүлжээний алхмаас урт, тиймээс амьд стрим хэзээ ч тэнцдэггүй. Тестүүд нь ping амьд байгаагийн шинж тэмдэг гэдгийг, мөн саяхан ping ирсэн стрим үхсэн гэж үзэгддэггүйг шалгадаг.

Энэ дүгнэлт: хуудасны харагдах байдал нь хуудасны тухай, сүлжээний холболтын тухай биш. Холболтоосоо асуу.

Алдаа 2: утас сэрсний дараа хагас хариулт

Энэ нь iOS simulator дээр бид үргэлж дахин үйлдэж чадсан:

  1. Шинэ чат эхлүүлээд удаан үргэлжлэх хүсэлт илгээ.
  2. Утас барилга дундуур унтахыг зөвшөөр.
  3. Эргэлт дууссаны дараа, хоёр минутын replay буфер дууссаны дараа буцаж ирээрэй.

Чат хариултын эхний хэдхэн блокийг, дууссан гэж тэмдэглэснээр харуулсан — хуудсыг шинэчлэх хүртэл ингэж үлдсэн.

Яагаад вэ

Шинэ чатад хэлхээ — хадгалагдсан яриа — эхний мессеж үүсгэх хүртэл байдаггүй. Энэ нь илгээх функцийн дотор, илгээх нь дахин нэгтгэх алхмыг аль хэдийн авсны дараа болдог, харин тэр нь хэлхээ байхгүй гэж бодсон хэвээр байсан. Тиймээс шинэ чатын эхний эргэлтийн төгсгөлд дахин нэгтгэх нь хэлхээ олохгүй, ямар нэг зүйл хүсэлгүй чимээгүй буцдаг байсан.

Ихэвчлэн хэн ч анзаардаггүй байсан, учир нь стрим эргэлт бүхэлд нь аль хэдийн хүргэсэн байдаг. Гэхдээ эргэлтийн үед унтсан, 120 секундын replay буфер дууссаны дараа буцаж ирсэн утас стримээс дутуу event-үүдийг авч чадахгүй, мөн дутууг нөхөх ёстой дахин нэгтгэх хэзээ ч ажилладаггүй байсан.

Засвар

  • Илгээх нь дахин нэгтгэхэд эргэлт аль хэлхээнд хамаарахыг хэлдэг, ингэснээр шинэ чатын эхний эргэлт бусад шигээ дахин нэгтгэгдэнэ. Хэрэв хариулт ирэх үед чи өөр чат нээсэн бол үр дүнг буруу газарт харуулахаас илүү хаядаг.
  • Амжилтгүй дахин нэгтгэлтийг дахин оролдоно. Муу холболт дээр сэрэх утас эргэлт дууссан гэж олж, дараа нь татаж чадахгүй байж магадгүй. Одоо үүнийг санаж, таб дахин харагдах эсвэл сүлжээ сэргээх үед чат дахин асууна.
  • "Worked for" шударга болсон. Хариулт бүр агент хэдэн хугацаа ажилласныг харуулдаг. Хэрэв таб сервероос эргэлтийн төгсгөлийн мессежийг хэзээ ч харж байгаагүй бол өөрийн цагаасаа дүүргэдэг байсан — Send-ээс утас сэрэх хүртэл, хугацаа алга болсноор. Одоо тэр тоо тооцоолол гэж тэмдэглэгдэж, түүх ирэхэд хадгалагдсан хугацаагаар солигддог.

Бидний авсан дүгнэлт

  • Хэрэглэгчдийн үнэхээр ашигладаг төхөөрөмж дээр, тэд ашигладаг аргаараа туршина. Хоёр алдаа хоёулаа «ажилладаг стрим» ба «халаасан утас»-ын хоорондох зайд амьдарч байсан.
  • Хэзээ ч ажилладаггүй нөөц алхам нь нөөц биш. Дахин нэгтгэх алхам яг энэ тохиолдлыг барих зорилготой байсан ч чимээгүй алгасдаг байсан.
  • Сэргээлтээ ч дахин оролдоорой. Утас сэрэх мөч нь ихэнхдээ холболт хамгийн муу байдаг мөч байдаг.
  • Таамаглалыг баримт мэт харуулж болохгүй. Буруу цагаас гарсан хугацаа огт байхаас ч муу; тэмдэглэ эсвэл соль.

Энэ ажил мөн эргэлт ажиллах явцад харагдах зарим зүйлийг цэвэрлэсэн: shell алхмууд cd-ийн оронд ажлыг хийдэг командаар нэрлэгддэг, чатын дэлгэцийн зургууд хуудасны зүүн дээд хэсгийг хадгалж баганад багтдаг, мөн шинэ төсөл хуудсыг дахин ачаалалгүйгээр үүсгэсэн нэрээ авдаг.

Хэрэв та утсанд зориулсан апп бүтээж байгаа бол утасны хөтөчид ээлтэй вэб апп бүтээх болон native болон progressive web app-ийн ялгаа гарын авлагууд үндсийг тайлбарласан. Чатын талаар илүү чатын docs-д байна.

Mythex · Pricing · AI-аар юуг ч бүтээ · Вэбсайт болон аппын загварууд · Mythex-ийн харьцуулалт · AI-аар апп бүтээх тайлбар толь · AI-аар апп бүтээх үнэгүй хэрэгслүүд · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 简体中文 繁體中文(香港) 繁體中文(台灣)