ಫೋನ್ ನಿದ್ರೆಗೆ ಹೋದಾಗ ಚಾಟ್ ಜೀವಂತವಾಗಿಡುವುದು
Mythex ನ ಏಜೆಂಟ್ ಒಂದು ವಿನಂತಿಯ ಮೇಲೆ ನಿಮಿಷಗಳ ಕಾಲ ಕೆಲಸ ಮಾಡಬಹುದು, ಮತ್ತು ನೀವು ಫೋನ್ನಿಂದ ನೋಡುತ್ತಿರಬಹುದು — ಅದು ಕೆಲಸ ಮಾಡುತ್ತಿರುವಾಗ ಫೋನ್ ಲಾಕ್ ಆಗಬಹುದು, ಆ್ಯಪ್ ಬದಲಿಸಬಹುದು, ನೆಟ್ವರ್ಕ್ ಬದಲಿಸಬಹುದು. ಅದು ತಪ್ಪಾಗಲು ಎರಡು ದೋಷಗಳು ಕಾರಣವಾಗಿದ್ದವು. ಒಂದರಲ್ಲಿ, ಚಾಟ್ ಪ್ರತಿ "ಪುಟ ಮತ್ತೆ ಗೋಚರ" ಸಂಕೇತವನ್ನೂ ಸಂಪರ್ಕ ಸತ್ತಿದೆ ಎಂಬ ಪುರಾವೆ ಎಂದು ಪರಿಗಣಿಸಿತು ಮತ್ತು "Connecting…" ನಲ್ಲಿ ಸಿಕ್ಕಿಕೊಳ್ಳುವವರೆಗೆ ಲೂಪ್ ಮಾಡಿತು. ಇನ್ನೊಂದರಲ್ಲಿ, ಹೊಸ ಚಾಟ್ನ ಮೊದಲ ಉತ್ತರವನ್ನು ನಿದ್ರಿಸಿದ ಫೋನ್ ಕಳೆದುಕೊಂಡಿತು, ಮತ್ತು ಹಿಂತಿರುಗಿದಾಗ ಉತ್ತರದ ಮೊದಲ ಕೆಲವು ತುಣುಕುಗಳು ಮಾತ್ರ ಸಿಕ್ಕವು, ಹಸ್ತಚಾಲಿತ ರಿಫ್ರೆಶ್ ಮಾಡುವವರೆಗೆ. ಎರಡನ್ನೂ ಈಗ ಸರಿಪಡಿಸಲಾಗಿದೆ.
ಚಾಟ್ ಚಾಲನೆಯಲ್ಲಿರುವ ಸುತ್ತನ್ನು ಹೇಗೆ ಹಿಂಬಾಲಿಸುತ್ತದೆ
ಏಜೆಂಟ್ ಕೆಲಸ ಮಾಡುತ್ತಿರುವಾಗ, ಚಾಟ್ ನಮ್ಮ ಸರ್ವರ್ಗಳಿಂದ ಒಂದು ಸ್ಟ್ರೀಮ್ ತೆರೆದಿಡುತ್ತದೆ: ಪ್ರತಿ ಹಂತ — ಒಂದು ಯೋಚನೆ, ಒಂದು ಟೂಲ್ ಕರೆ, ಉತ್ತರದ ಒಂದು ತುಣುಕು — ಒಂದು ಈವೆಂಟ್ ಆಗಿ ಬರುತ್ತದೆ. ಸ್ಟ್ರೀಮ್ ಕಡಿತಗೊಂಡರೆ, ಚಾಟ್ ಮರುಸಂಪರ್ಕಿಸುತ್ತದೆ ಮತ್ತು ಸರ್ವರ್ ಇತ್ತೀಚಿನ ಈವೆಂಟ್ಗಳನ್ನು ಮರುಪ್ಲೇ ಮಾಡುತ್ತದೆ — ಕೊನೆಯ 120 ಸೆಕೆಂಡ್ಗಳನ್ನು ಹಿಡಿದಿಡುವ ಬಫರ್ನಿಂದ. ಸುತ್ತು ಮುಗಿದಾಗ, ಚಾಟ್ ಉಳಿಸಿದ ಇತಿಹಾಸವನ್ನು ಸರ್ವರ್ನಿಂದ ಕೇಳುತ್ತದೆ ಮತ್ತು ತೋರಿಸಿದ್ದನ್ನು ಸಂಗ್ರಹವಾದದ್ದರೊಂದಿಗೆ ಸಮನ್ವಯಗೊಳಿಸುತ್ತದೆ. ಆ ಕೊನೆಯ ಹಂತವು ಸ್ಟ್ರೀಮ್ ತಪ್ಪಿಸಿಕೊಂಡದ್ದನ್ನು ಹಿಡಿಯುತ್ತದೆ.
ಏನೂ ನಡೆಯದಿರುವಾಗ ಜೀವಂತ ಸಂಪರ್ಕ ಮತ್ತು ಸತ್ತ ಸಂಪರ್ಕವನ್ನು ಗುರುತಿಸಲು, ಸರ್ವರ್ ಪ್ರತಿ 15 ಸೆಕೆಂಡ್ಗಳಿಗೊಮ್ಮೆ ಒಂದು ಸಣ್ಣ "ping" ಕಳುಹಿಸುತ್ತದೆ.
ದೋಷ 1: ಎಚ್ಚರವಾದದ್ದು ಆರೋಗ್ಯಕರ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಕೊಂದಿತು
ಬ್ರೌಸರ್ಗಳು ಪುಟ ಮತ್ತೆ ಗೋಚರವಾದಾಗ ಅದಕ್ಕೆ ತಿಳಿಸುತ್ತವೆ: ಟ್ಯಾಬ್ ಬದಲಿಸಿದ ನಂತರ, ಸ್ಕ್ರೀನ್ ಅನ್ಲಾಕ್ ಆದ ನಂತರ. ನಾವು ಅದನ್ನು ಸಂಪರ್ಕ ಪರಿಶೀಲಿಸುವ ಸೂಚನೆಯಾಗಿ ಬಳಸುತ್ತಿದ್ದೆವು — ವಾಸ್ತವವಾಗಿ, ಅದು ಮರೆಯಾಗಿದ್ದಾಗ ಸ್ಟ್ರೀಮ್ ಸತ್ತಿದೆ ಎಂದು ಭಾವಿಸಿ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸಿ ಮರುಸಂಪರ್ಕಿಸುತ್ತಿದ್ದೆವು.
ಫೋನ್ಗಳು ಮತ್ತು ಎಂಬೆಡೆಡ್ ಬ್ರೌಸರ್ಗಳಲ್ಲಿ, ಈ ಈವೆಂಟ್ಗಳು ಸ್ಟ್ರೀಮ್ ಸಾಯುವುದಕ್ಕಿಂತ ಬಹಳ ಹೆಚ್ಚಾಗಿ ಸಂಭವಿಸುತ್ತವೆ — ಪ್ರತಿ ಟ್ಯಾಬ್ ಬದಲಾವಣೆ, ಪ್ರತಿ ಅನ್ಲಾಕ್, ಮತ್ತು ಕೆಲವು ಎಂಬೆಡೆಡ್ ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ಪ್ರತಿ ಕೆಲವು ಸೆಕೆಂಡ್ಗಳಿಗೊಮ್ಮೆ. ಪ್ರತಿಯೊಂದೂ ಆರೋಗ್ಯಕರ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ರದ್ದುಗೊಳಿಸಿತು. ಚಾಟ್ ಮರುಸಂಪರ್ಕಿಸಿತು, ಮರುಪ್ಲೇ ಮಾಡಿತು, ಮತ್ತೆ ರದ್ದಾಯಿತು, ಮತ್ತು ಕೊನೆಗೆ "Connecting…" ನಲ್ಲಿ ನಿಂತಿತು. ನಂತರ ಏಜೆಂಟ್ ಇನ್ನೂ ಕೆಲಸ ಮಾಡುತ್ತಿರುವಾಗಲೇ ಸುತ್ತು ಮುಗಿದಿದೆ ಎಂದು ಹೇಳಿತು.
ಪರಿಹಾರ: ಸ್ಟ್ರೀಮ್ ಮಾತನಾಡುತ್ತಿದೆಯೇ ಎಂಬುದರಿಂದ ತೀರ್ಪು ನೀಡಿ
ಪ್ರತಿ ಪ್ರಾಜೆಕ್ಟ್ನ ಸ್ಟ್ರೀಮ್ ಕೊನೆಯದಾಗಿ ಏನನ್ನಾದರೂ ಸ್ವೀಕರಿಸಿದ ಸಮಯವನ್ನು ಚಾಟ್ ಈಗ ದಾಖಲಿಸುತ್ತದೆ — ಈವೆಂಟ್ಗಳು ಮತ್ತು 15-ಸೆಕೆಂಡ್ ಪಿಂಗ್ಗಳು ಎರಡೂ. "ಮತ್ತೆ ಗೋಚರ" ಸಂಕೇತವು 25 ಸೆಕೆಂಡ್ಗಳ ಕಾಲ ಮೌನವಾಗಿದ್ದ ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಮಾತ್ರ ರದ್ದುಗೊಳಿಸುತ್ತದೆ: ಪಿಂಗ್ ಅಂತರ ಮತ್ತು ನಿಧಾನ ನೆಟ್ವರ್ಕ್ ಹಾಪ್ಗಿಂತ ದೀರ್ಘ, ಆದ್ದರಿಂದ ಜೀವಂತ ಸ್ಟ್ರೀಮ್ ಎಂದಿಗೂ ಅರ್ಹವಾಗುವುದಿಲ್ಲ. ಪರೀಕ್ಷೆಗಳು ಪಿಂಗ್ ಜೀವದ ಚಿಹ್ನೆಯಾಗಿ ಎಣಿಸುತ್ತದೆ ಎಂದು ಮತ್ತು ಇತ್ತೀಚೆಗೆ ಪಿಂಗ್ ಮಾಡಿದ ಸ್ಟ್ರೀಮ್ ಸತ್ತಿದೆ ಎಂದು ಪರಿಗಣಿಸಲಾಗುವುದಿಲ್ಲ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತವೆ.
ಅದರಿಂದ ನಾವು ತೆಗೆದುಕೊಂಡ ನಿಯಮ: ಪುಟದ ಗೋಚರತೆ ಪುಟದ ಬಗ್ಗೆ ಹೇಳುತ್ತದೆ, ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕದ ಬಗ್ಗೆ ಅಲ್ಲ. ಸಂಪರ್ಕವನ್ನೇ ಕೇಳಿ.
ದೋಷ 2: ಫೋನ್ ಎಚ್ಚರವಾದ ನಂತರ ಅರ್ಧ ಉತ್ತರ
ಇದನ್ನು ನಾವು iOS ಸಿಮ್ಯುಲೇಟರ್ನಲ್ಲಿ ಪ್ರತಿ ಸಲವೂ ಪುನರುತ್ಪಾದಿಸಬಹುದಿತ್ತು:
- ಹೊಸ ಚಾಟ್ ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಸ್ವಲ್ಪ ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುವ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸಿ.
- ಬಿಲ್ಡ್ ನಡೆಯುವಾಗ ಫೋನ್ ನಿದ್ರಿಸಲು ಬಿಡಿ.
- ಸುತ್ತು ಮುಗಿದ ನಂತರ ಮತ್ತು ಎರಡು ನಿಮಿಷಗಳ ಮರುಪ್ಲೇ ಬಫರ್ ಅವಧಿ ಮುಗಿದ ನಂತರ ಹಿಂತಿರುಗಿ.
ಚಾಟ್ ಉತ್ತರದ ಮೊದಲ ಕೆಲವು ಬ್ಲಾಕ್ಗಳನ್ನು ತೋರಿಸಿತು, ಮುಗಿದವು ಎಂದು ಗುರುತಿಸಿ — ಮತ್ತು ನೀವು ಪುಟ ರಿಫ್ರೆಶ್ ಮಾಡುವವರೆಗೂ ಹಾಗೆಯೇ ಇತ್ತು.
ಕಾರಣ
ಹೊಸ ಚಾಟ್ಗೆ ಮೊದಲ ಸಂದೇಶ ಅದನ್ನು ರಚಿಸುವವರೆಗೆ ಥ್ರೆಡ್ — ಅಂದರೆ ಉಳಿಸಿದ ಸಂಭಾಷಣೆ — ಇರುವುದಿಲ್ಲ. ಅದು ಸಂದೇಶ ಕಳುಹಿಸುವ ಫಂಕ್ಷನ್ನೊಳಗೆ ನಡೆಯುತ್ತದೆ, ಆದರೆ ಕಳುಹಿಸು ಈಗಾಗಲೇ ಸಮನ್ವಯ ಹಂತವನ್ನು ಹಿಡಿದಿತ್ತು — ಅದು ಇನ್ನೂ ಥ್ರೆಡ್ ಇಲ್ಲ ಎಂದೇ ಭಾವಿಸಿತ್ತು. ಆದ್ದರಿಂದ ಹೊಸ ಚಾಟ್ನ ಮೊದಲ ಸುತ್ತಿನ ಕೊನೆಯಲ್ಲಿ, ಸಮನ್ವಯ ಥ್ರೆಡ್ ಇಲ್ಲವೆಂದು ನೋಡಿ ಏನನ್ನೂ ಕೇಳದೆ ಶಾಂತವಾಗಿ ಹಿಂತಿರುಗಿತು.
ಸಾಮಾನ್ಯವಾಗಿ ಯಾರೂ ಗಮನಿಸುತ್ತಿರಲಿಲ್ಲ, ಏಕೆಂದರೆ ಸ್ಟ್ರೀಮ್ ಇಡೀ ಸುತ್ತನ್ನು ಈಗಾಗಲೇ ತಲುಪಿಸಿತ್ತು. ಆದರೆ ಸುತ್ತಿನ ಸಮಯದಲ್ಲಿ ನಿದ್ರಿಸಿದ ಮತ್ತು 120-ಸೆಕೆಂಡ್ ಮರುಪ್ಲೇ ಬಫರ್ ಅವಧಿ ಮುಗಿದ ನಂತರ ಹಿಂತಿರುಗಿದ ಫೋನ್ ಸ್ಟ್ರೀಮ್ನಿಂದ ಕಾಣೆಯಾದ ಈವೆಂಟ್ಗಳನ್ನು ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ — ಮತ್ತು ಅಂತರವನ್ನು ತುಂಬಬೇಕಿದ್ದ ಸಮನ್ವಯ ಎಂದಿಗೂ ನಡೆದಿರಲಿಲ್ಲ.
ಪರಿಹಾರ
- ಕಳುಹಿಸು ಸಮನ್ವಯಕ್ಕೆ ಯಾವ ಥ್ರೆಡ್ಗೆ ಸುತ್ತು ಸೇರಿದೆ ಎಂದು ತಿಳಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಹೊಸ ಚಾಟ್ನ ಮೊದಲ ಸುತ್ತು ಯಾವುದೇ ಇತರ ಸುತ್ತಿನಂತೆ ಸಮನ್ವಯಗೊಳ್ಳುತ್ತದೆ. ಉತ್ತರ ಮರಳುವ ಹೊತ್ತಿಗೆ ನೀವು ಬೇರೆ ಚಾಟ್ ತೆರೆದಿದ್ದರೆ, ಫಲಿತಾಂಶವನ್ನು ತಪ್ಪಾದ ಸ್ಥಳದಲ್ಲಿ ತೋರಿಸುವ ಬದಲು ಬಿಡಲಾಗುತ್ತದೆ.
- ವಿಫಲವಾದ ಸಮನ್ವಯವನ್ನು ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲಾಗುತ್ತದೆ. ಕೆಟ್ಟ ಸಂಪರ್ಕದಲ್ಲಿ ಎಚ್ಚರವಾಗುವ ಫೋನ್ ಸುತ್ತು ಮುಗಿದಿದೆ ಎಂದು ಕಂಡುಕೊಂಡು ನಂತರ ಅದನ್ನು ತರಲು ವಿಫಲವಾಗಬಹುದು. ಅದನ್ನು ಈಗ ನೆನಪಿಡಲಾಗುತ್ತದೆ, ಮತ್ತು ಟ್ಯಾಬ್ ಮತ್ತೆ ತೋರಿಸಿದಾಗ ಅಥವಾ ನೆಟ್ವರ್ಕ್ ಮರಳಿದಾಗ ಚಾಟ್ ಮತ್ತೆ ಕೇಳುತ್ತದೆ.
- "ಕೆಲಸ ಮಾಡಿದ" ಸಮಯ ಪ್ರಾಮಾಣಿಕವಾಗಿದೆ. ಪ್ರತಿ ಉತ್ತರವು ಏಜೆಂಟ್ ಎಷ್ಟು ಹೊತ್ತು ಕೆಲಸ ಮಾಡಿತು ಎಂದು ತೋರಿಸುತ್ತದೆ. ಟ್ಯಾಬ್ ಸರ್ವರ್ನ ಸುತ್ತು-ಅಂತ್ಯ ಸಂದೇಶವನ್ನು ಎಂದಿಗೂ ನೋಡದಿದ್ದರೆ, ಅದು ಕಳುಹಿಸು ಕ್ಲಿಕ್ ಮಾಡಿದಾಗಿನಿಂದ ಫೋನ್ ಎಚ್ಚರವಾಗುವವರೆಗೆ ಅದರ ಸ್ವಂತ ಗಡಿಯಾರದಿಂದ ಅದನ್ನು ತುಂಬುತ್ತಿತ್ತು — ದೂರದ ಸಮಯವನ್ನೂ ಸೇರಿಸಿ. ಆ ಅಂಕಿಅಂಶವನ್ನು ಈಗ ಅಂದಾಜು ಎಂದು ಗುರುತಿಸಲಾಗಿದೆ, ಮತ್ತು ಇತಿಹಾಸ ಬಂದ ನಂತರ ಉಳಿಸಿದ ಅವಧಿಯಿಂದ ಬದಲಾಗುತ್ತದೆ.
ನಾವು ಇದರಿಂದ ಕಲಿತದ್ದು
- ಜನರು ನಿಜವಾಗಿ ಬಳಸುವ ಸಾಧನದಲ್ಲಿ, ಅವರು ಬಳಸುವ ರೀತಿಯಲ್ಲಿ ಪರೀಕ್ಷಿಸಿ. ಎರಡೂ ದೋಷಗಳು "ಕೆಲಸ ಮಾಡುವ ಸ್ಟ್ರೀಮ್" ಮತ್ತು "ಜೇಬಿನಲ್ಲಿರುವ ಫೋನ್" ನಡುವಿನ ಅಂತರದಲ್ಲಿ ಇದ್ದವು.
- ಎಂದಿಗೂ ನಡೆಯದ ಬ್ಯಾಕಪ್ ಬ್ಯಾಕಪ್ ಅಲ್ಲ. ಸಮನ್ವಯ ಹಂತ ಈ ನಿಖರ ಪ್ರಕರಣವನ್ನು ಹಿಡಿಯಲು ಇತ್ತು, ಮತ್ತು ಅದು ಮೌನವಾಗಿ ಅದನ್ನು ಬಿಟ್ಟುಬಿಟ್ಟಿತ್ತು.
- ಚೇತರಿಕೆಯನ್ನೂ ಮರುಪ್ರಯತ್ನಿಸಿ. ಫೋನ್ ಎಚ್ಚರವಾಗುವ ಕ್ಷಣ ಆಗಾಗ್ಗೆ ಅದರ ಸಂಪರ್ಕ ಅತ್ಯಂತ ಕೆಟ್ಟದಾಗಿರುವ ಸಮಯ.
- ಊಹೆಯನ್ನು ಸತ್ಯವೆಂದು ತೋರಿಸಬೇಡಿ. ತಪ್ಪು ಗಡಿಯಾರದ ಅವಧಿ ಏನೂ ಇಲ್ಲದಿರುವುದಕ್ಕಿಂತ ಕೆಟ್ಟದು; ಅದನ್ನು ಗುರುತಿಸಿ ಅಥವಾ ಬದಲಿಸಿ.
ಅದೇ ಕೆಲಸವು ಸುತ್ತು ನಡೆಯುವಾಗ ನೀವು ನೋಡುವ ಕೆಲವು ವಿಷಯಗಳನ್ನೂ ಸ್ವಚ್ಛಗೊಳಿಸಿತು: ಶೆಲ್ ಹಂತಗಳನ್ನು cd ಬದಲು ಕೆಲಸ ಮಾಡುವ ಆದೇಶದಿಂದ ಲೇಬಲ್ ಮಾಡಲಾಗುತ್ತದೆ, ಚಾಟ್ನ ಸ್ಕ್ರೀನ್ಶಾಟ್ಗಳು ಪುಟದ ಮೇಲ್ಭಾಗದ ಎಡ ಮೂಲೆಯನ್ನು ಉಳಿಸಿ ಕಾಲಮ್ಗೆ ಹೊಂದಿಕೊಳ್ಳುತ್ತವೆ, ಮತ್ತು ಹೊಸ ಪ್ರಾಜೆಕ್ಟ್ ರಿಫ್ರೆಶ್ ಇಲ್ಲದೆ ತನ್ನ ರಚಿತ ಹೆಸರನ್ನು ಪಡೆಯುತ್ತದೆ.
ಫೋನ್ಗಳಿಗಾಗಿ ನಿಮ್ಮದೇ ಆ್ಯಪ್ ನಿರ್ಮಿಸುತ್ತಿದ್ದರೆ, ಮೊಬೈಲ್-ಸ್ನೇಹಿ ವೆಬ್ ಆ್ಯಪ್ ನಿರ್ಮಿಸುವುದು ಮತ್ತು ನೇಟಿವ್ ವರ್ಸಸ್ ಪ್ರೋಗ್ರೆಸಿವ್ ವೆಬ್ ಆ್ಯಪ್ಗಳು ಮೂಲಭೂತ ಅಂಶಗಳನ್ನು ಒಳಗೊಳ್ಳುತ್ತವೆ. ಚಾಟ್ ಬಗ್ಗೆ ಇನ್ನಷ್ಟು ಚಾಟ್ ದಸ್ತಾವೇಜು ನಲ್ಲಿದೆ.