Блог

Baby Monitor Timmy техникалык жактан кантип иштейт

WebRTC, Firebase жана учтан-учка коргоо — түшүнүксүз терминдерсиз.

Үч негизги бөлүк, бир максат

Техникалык жактан алганда, Timmy абдан практикалык жол менен түзүлгөн: Flutter колдонмо үчүн, WebRTC реалдуу убакыттагы үн жана видео үчүн, жана Firebase координация үчүн. Баарын булут аркылуу өткөргөн чоң платформа кургум келген эмес. Ар бир бөлүк мүмкүн болушунча аз маалымат билип, ошол эле учурда башкалары менен ишенимдүү иштеши керек.

WebRTC: түз байланыш, демейки боюнча шифрленген

WebRTC (Web Real-Time Communication) бала жана ата-эне түзмөктөрүнүн ортосунда үн менен видеону өткөрөт. Эң жакшы жагдайда маалымат эки түзмөктүн ортосунда түз эле, башкача айтканда peer-to-peer түрүндө, ортодо медиа серверсиз агат.

Ар бир WebRTC туташуусу демейки боюнча DTLS-SRTP колдонот. Кимдир бирөө тармак пакеттерин кармап алса да, окула турган үн же видео ала албайт. Бул шифрлөө протоколдун бир бөлүгү жана WebRTC'де аны жөн эле өчүрүп коюу мүмкүн эмес.

Мен үчүн маанилүү жагы ушул эле: балдар бөлмөсүндөгү медиа менин сервериме тийбейт. Ал сиздин түзмөктөрүңүздүн ортосунда гана калат.

Firebase Firestore аркылуу сигналдаштыруу

WebRTC башталардан мурун, түзмөктөр бири-бирин таап, кантип туташа аларын макулдашышы керек. Бул бөлүк сигналдаштыруудеп аталат. Timmy бул үчүн Google'дун булуттагы маалымат базасы Firebase Firestore'ду колдонот.

Техникалык туташуу маалыматтары гана алмашылат:

Үн менен видео Firebase'ге түшпөйт. Firestore техникалык туташуу маалыматтарын гана өткөрөт. Timmy сигналдаштыруу катмарын да шифрлейт, ошондуктан SDP жана ICE маалыматтары Firestore'до ачык текст түрүндө жеткиликтүү болбойт.

TURN серверлери: түз жол иштебей калганда

Айрым тармактар түз туташууларды бөгөттөйт, мисалы катуу фаерволдор же айрым мобилдик операторлор. Андайда WebRTC'ге TURN релеси (NAT айланасында реле аркылуу өтүү) керек болот.

Timmy адегенде жергиликтүү TURN серверин колдонууга аракет кылат, ал эми жергиликтүү реле жеткиликсиз же ашыкча жүктөлгөндө Cloudflare'ди резерв катары колдонот. Реле шифрленген пакеттерди гана өткөрөт. Анын үн же видео үчүн ачкычтары болбойт; WebRTC шифрлөөсү сакталып калат.

TURN кирүү маалыматтарын Firebase Cloud Function берет жана алар болгону 24 саатка жарактуу. Менин оюмча, бала көзөмөлдөө колдонмосунда туруктуу кирүү маалыматтарын колдонуу өтө кооптуу.

Nearby Connections: түзмөктөр бири-бирин автоматтык табат

Бала жана ата-эне түзмөгүнүн ортосундагы ыңгайсыз жөндөө кадамдарын болтурбоо үчүн Timmy Nearby Connectionsколдонот. Google бул түзмөктөрдү табуу мүмкүнчүлүгүн Bluetooth жана Wi-Fi аркылуу камсыз кылат.

Timmy'деги автоматтык жупташтыруу кодду кол менен киргизбестен иштейт: түзмөктөр бири-бирин таап, ачкыч алмашуу үчүн бир эле байланыш түйүнүн табышат. Эгер бул ишке ашпаса, терип киргизе турган 4 белгиден турган код бар. Жупташтыруу коду түзмөктөн эч качан чыкпайт; Firestore документтин идентификатору катары криптографиялык хэшти (SHA-256) гана көрөт.

Анонимдүү аутентификация

Timmy Firebase Anonymous Authentication кызматын колдонот. Биринчи жолу иштетилгенде ар бир түзмөк убактылуу, анонимдүү ID алат. Каттоо эсеби, электрондук почта дареги жана сырсөз талап кылынбайт. ID Firestore эрежелерин колдонуу үчүн гана керек: сессия маалыматтарын аутентификациядан өткөн түзмөктөр гана окуй же жаза алат.

Архитектура: ким жөнөтөт, ким кабыл алат

Timmy'де эки режим бар:

Push-to-talk жана камераны күйгүзүү/өчүрүү сыяктуу башкаруулар DataChannelдеген дагы бир WebRTC каналын колдонот; ал кичинекей шифрленген билдирүүлөрдү түзмөктөрдүн ортосунда түз жөнөтөт.

Эмне үчүн Flutter?

Flutter — Google'дун бир нече платформага колдонмо түзүүчү фреймворку. Timmy үчүн бул логиканын көп бөлүгүн бир жолу жазып, Android жана iOS'то колдонууга болорун билдирет. Timmy Android'де жеткиликтүү, ал эми iOS версиясы чыгарылууга жакын. Кайталанган код аз болсо, каталар кирип кетчү жерлер да азыраак болот.

Жыйынтык

Техникалык эреже жөнөкөй: Timmy өзүнө чындап зарыл болгон маалыматтарды гана иштетиши керек. WebRTC медианы коргойт, Firebase туташууну орнотууну координациялайт, TURN шифрленген пакеттерди гана көрөт, ал эми Nearby Connections жупташтырууну жеңилдетет.

Жакшы технология күнүмдүк жашоодо анча байкалбай калат. Ал балдар бөлмөсүн булуттагы долбоорго айландырбай эле иштейт.


Дагы макалалар