బ్లాగ్

Baby Monitor Timmy సాంకేతికంగా ఎలా పనిచేస్తుంది

WebRTC, Firebase, ఎండ్-టు-ఎండ్ రక్షణ—క్లిష్టమైన పదజాలం లేకుండా వివరణ.

మూడు ప్రధాన భాగాలు, ఒకే లక్ష్యం

లోపల Timmy చాలా ప్రాక్టికల్‌గా నిర్మించబడింది: Flutter యాప్ కోసం, WebRTC రియల్-టైమ్ ఆడియో, వీడియో కోసం, మరియు Firebase సమన్వయం కోసం. అన్నింటినీ క్లౌడ్ ద్వారా పంపే భారీ ప్లాట్‌ఫారమ్‌ను నేను నిర్మించాలనుకోలేదు. ప్రతి భాగం సాధ్యమైనంత తక్కువ సమాచారమే తెలుసుకుని, మిగతావాటితో నమ్మకంగా పనిచేయాలి.

WebRTC: నేరుగా కనెక్షన్, డిఫాల్ట్‌గా ఎన్‌క్రిప్షన్

WebRTC (Web Real-Time Communication) బేబీ డివైస్, పేరెంట్ డివైస్ మధ్య ఆడియో, వీడియోను పంపుతుంది. ఉత్తమ పరిస్థితిలో డేటా రెండు డివైస్‌ల మధ్య నేరుగా, అంటే పీర్-టు-పీర్‌గా, మధ్యలో మీడియా సర్వర్ లేకుండా ప్రవహిస్తుంది.

ప్రతి WebRTC కనెక్షన్ డిఫాల్ట్‌గా DTLS-SRTPని ఉపయోగిస్తుంది. ఎవరైనా నెట్‌వర్క్ ప్యాకెట్లను పట్టుకున్నా, వారికి వినగలిగే ఆడియో లేదా చూడగలిగే వీడియో దొరకదు. ఈ ఎన్‌క్రిప్షన్ ప్రోటోకాల్‌లో భాగం; WebRTCలో దీన్ని సులభంగా ఆఫ్ చేయలేరు.

నాకు ముఖ్యమైన విషయం ఇదే: నర్సరీ మీడియా నా సర్వర్‌లో ఉండకూడదు. అది మీ డివైస్‌ల మధ్యే ఉంటుంది.

Firebase Firestore ద్వారా సిగ్నలింగ్

WebRTC ప్రారంభం కావడానికి ముందు, డివైస్‌లు ఒకదాన్నొకటి గుర్తించి ఎలా కనెక్ట్ కావచ్చో నిర్ణయించుకోవాలి. ఈ భాగాన్ని సిగ్నలింగ్ అంటారు. దీని కోసం Timmy, Google క్లౌడ్ డేటాబేస్ అయిన Firebase Firestoreను ఉపయోగిస్తుంది.

సాంకేతిక కనెక్షన్ డేటా మాత్రమే మార్పిడి అవుతుంది:

ఆడియో, వీడియో Firebaseలోకి వెళ్లవు. Firestore సాంకేతిక కనెక్షన్ డేటాను మాత్రమే పంపుతుంది. Timmy ఈ సిగ్నలింగ్ లేయర్‌ను కూడా ఎన్‌క్రిప్ట్ చేస్తుంది; కాబట్టి SDP, ICEలకు Firestore ప్లెయిన్‌టెక్స్ట్ సమావేశ స్థలంగా మారదు.

TURN సర్వర్లు: నేరుగా మార్గం పనిచేయనప్పుడు

కొన్ని నెట్‌వర్క్‌లు నేరుగా కనెక్షన్‌లను అడ్డుకుంటాయి; ఉదాహరణకు కఠినమైన ఫైర్‌వాల్‌లు లేదా కొన్ని మొబైల్ క్యారియర్‌లు. అప్పుడు WebRTCకి TURN రిలే (Traversal Using Relays around NAT) అవసరం.

Timmy ముందుగా స్థానిక TURN సర్వర్‌ను ప్రయత్నిస్తుంది. అది అందుబాటులో లేకపోయినా లేదా ఎక్కువ లోడ్‌లో ఉన్నా Cloudflareను ప్రత్యామ్నాయంగా ఉపయోగిస్తుంది. రిలే ఎన్‌క్రిప్ట్ చేసిన ప్యాకెట్లను మాత్రమే ఫార్వర్డ్ చేస్తుంది. దానికి ఆడియో లేదా వీడియోకు సంబంధించిన కీలు ఉండవు; WebRTC ఎన్‌క్రిప్షన్ అలాగే ఉంటుంది.

TURN క్రెడెన్షియల్‌లు Firebase Cloud Function నుంచి వస్తాయి, అవి కేవలం 24 గంటలపాటే చెల్లుతాయి. బేబీ మానిటర్ యాప్‌లో శాశ్వత క్రెడెన్షియల్‌లు ఉండటం నాకు చాలా ప్రమాదకరంగా అనిపిస్తుంది.

Nearby Connections: డివైస్‌లు ఒకదాన్నొకటి ఆటోమేటిక్‌గా కనుగొంటాయి

బేబీ, పేరెంట్ డివైస్‌ల మధ్య ఇబ్బందికరమైన సెటప్ దశలు లేకుండా ఉండేందుకు Timmy Nearby Connectionsను ఉపయోగిస్తుంది. Google ఈ గుర్తింపు లేయర్‌ను Bluetooth, WiFi ద్వారా అందిస్తుంది.

Timmyలో ఆటోమేటిక్ జత చేయడం మాన్యువల్‌గా కోడ్ నమోదు చేయకుండానే పనిచేస్తుంది: డివైస్‌లు ఒకదాన్నొకటి గుర్తించి, కీ మార్పిడికి ఒకే సమావేశ స్థానాన్ని కనుగొంటాయి. అది విఫలమైతే, మీరు నమోదు చేయగల 4-అక్షరాల కోడ్ ఉంటుంది. జత చేసే కోడ్ ఎప్పుడూ డివైస్‌ను విడిచిపోదు; Firestore డాక్యుమెంట్ ఐడెంటిఫైయర్‌గా క్రిప్టోగ్రాఫిక్ హ్యాష్ (SHA-256)ను మాత్రమే చూస్తుంది.

అనామక ధృవీకరణ

Timmy Firebase Anonymous Authenticationను ఉపయోగిస్తుంది. మొదటిసారి తెరిచినప్పుడు, ప్రతి డివైస్‌కు తాత్కాలిక అనామక ID వస్తుంది. అకౌంట్ లేదు, ఇమెయిల్ అడ్రస్ లేదు, పాస్‌వర్డ్ లేదు. Firestore నియమాలను అమలు చేయడానికే ఈ ID ఉంటుంది: ధృవీకరించబడిన డివైస్‌లు మాత్రమే సెషన్ డేటాను చదవగలవు లేదా రాయగలవు.

నిర్మాణం: ఎవరు పంపుతారు, ఎవరు అందుకుంటారు

Timmyలో రెండు మోడ్‌లు ఉన్నాయి:

పుష్-టు-టాక్, కెమెరా ఆన్/ఆఫ్ వంటి నియంత్రణలు DataChannelను ఉపయోగిస్తాయి. ఇది డివైస్‌ల మధ్య చిన్న ఎన్‌క్రిప్ట్ చేసిన సందేశాలను నేరుగా పంపే మరో WebRTC ఛానెల్.

Flutter ఎందుకు?

Flutter అనేది అనేక ప్లాట్‌ఫారమ్‌లలో యాప్‌ల కోసం Google రూపొందించిన ఫ్రేమ్‌వర్క్. Timmyకి దీని అర్థం, చాలా లాజిక్‌ను ఒకసారి రాసి Android, iOS రెండింటిలోనూ ఉపయోగించవచ్చు. Timmy Androidలో అందుబాటులో ఉంది; iOS వెర్షన్ విడుదలకు దగ్గరలో ఉంది. డూప్లికేట్ కోడ్ తక్కువైతే బగ్‌లు చొరబడే చోట్లూ తక్కువగా ఉంటాయి.

సారాంశం

సాంకేతిక నియమం సులభం: Timmyకి నిజంగా అవసరమైన డేటానే ఉపయోగించాలి. WebRTC మీడియాను కాపాడుతుంది, Firebase కనెక్షన్ సెటప్‌ను సమన్వయం చేస్తుంది, TURN ఎన్‌క్రిప్ట్ చేసిన ప్యాకెట్లను మాత్రమే చూస్తుంది, Nearby Connections జత చేయడంలోని ఇబ్బందిని తగ్గిస్తుంది.

మంచి సాంకేతికత రోజువారీ జీవితంలో కొంత కలిసిపోతుంది. నర్సరీని క్లౌడ్ ప్రాజెక్ట్‌గా మార్చకుండా అది పనిచేస్తుంది.


మరిన్ని వ్యాసాలు