WebSocket კავშირის მართვა და სასიცოცხლო ციკლი
WebSocket პროტოკოლი უზრუნველყოფს ორმხრივი, რეალურ დროში მონაცემთა გადაცემის არხს კლიენტსა და სერვერს შორის. განსხვავებით ტრადიციული HTTP მოთხოვნებისგან, სადაც კლიენტი ყოველთვის ინიციატორია, WebSocket კავშირი მყარდება ერთხელ და რჩება აქტიური, რაც საშუალებას აძლევს ორივე მხარეს გაგზავნოს მონაცემები ნებისმიერ დროს.
კავშირის დამყარების პროცესი იწყება მაშინ, როდესაც მომხმარებელი ირჩევს "დაკავშირება". ამ დროს ინსტრუმენტი გადადის საწყის ფაზაში და ეკრანზე გამოდის შეტყობინება: "მიმდინარეობს ‹address›-თან დაკავშირება…". თუ კავშირი წარმატებით დამყარდა, ჟურნალში ჩნდება ჩანაწერი "დაკავშირებულია ‹address›-თან." და იწყება აქტიური სესიის მონიტორინგი.
კავშირის სასიცოცხლო ციკლი მოიცავს რამდენიმე მნიშვნელოვან ეტაპს:
- დაკავშირების მცდელობა: კლიენტი აგზავნის ხელის ჩამორთმევის (handshake) მოთხოვნას მითითებულ მისამართზე.
- აქტიური კავშირი: კლიენტსა და სერვერს შეუძლიათ ტექსტური და ორობითი შეტყობინებების ორმხრივი გაცვლა.
- კავშირის დახურვა: კავშირი შეიძლება დაიხუროს კლიენტის ინიციატივით, სერვერის მხრიდან ან ქსელური შეცდომის გამო. კავშირის დახურვისას ინსტრუმენტი აჩვენებს სტატუსს "კავშირის დახურვა…", რასაც მოსდევს საბოლოო სტატუსი "კავშირი დახურულია კოდით
‹code›.".
მისამართის ფორმატები და პროტოკოლის წესები
WebSocket კავშირის დასამყარებლად აუცილებელია სწორი მისამართის მითითება. ინსტრუმენტი მხარს უჭერს მხოლოდ ორ სქემას: ws:// (არადაცული კავშირი) და wss:// (დაცული კავშირი TLS/SSL შიფრირებით).
მისამართის შეყვანისას მოქმედებს შემდეგი მკაცრი წესები და შეზღუდვები:
- სრული მისამართი: მომხმარებელმა უნდა შეიყვანოს სრული მისამართი. თუ შეყვანილი მნიშვნელობა არასრულია, სისტემა აჩვენებს შეცდომას: "შეიყვანეთ სრული WebSocket მისამართი, როგორიცაა wss://example.com/socket.".
- პროტოკოლის ვალიდაცია: სხვა ნებისმიერი სქემის გამოყენების მცდელობისას, მომხმარებელი დაინახავს გაფრთხილებას: "გამოიყენეთ ws:// ან wss:// მისამართი.".
- სიმბოლოების ლიმიტი: მისამართის მაქსიმალური სიგრძე შეზღუდულია 2,048 სიმბოლოთი. თუ ეს ლიმიტი გადაიჭარბება, გამოისახება შეტყობინება: "ეს მისამართი უჩვეულოდ გრძელია. შეინახეთ იგი 2,048 სიმბოლოების ქვეშ.".
უსაფრთხოების თვალსაზრისით, wss:// პროტოკოლის გამოყენება რეკომენდებულია იმ შემთხვევებში, როდესაც ხდება სენსიტიური მონაცემების გადაცემა, რათა თავიდან იქნას აცილებული მესამე მხარის მიერ ტრაფიკის ჩაჭრა.
შეტყობინებების გაგზავნა და ფორმატები
კავშირის დამყარების შემდეგ, მომხმარებელს შეუძლია ტექსტური შეტყობინებების გაგზავნა სერვერზე. შეტყობინების გაგზავნა შესაძლებელია მხოლოდ აქტიური კავშირის არსებობისას. თუ მომხმარებელი შეეცდება შეტყობინების გაგზავნას მანამ, სანამ კავშირი დამყარდება, ინსტრუმენტი აჩვენებს შეცდომას: "დაკავშირება შეტყობინების გაგზავნამდე.".
შეტყობინებების გაგზავნისა და მიღების წესები:
- გაგზავნის მეთოდი: ტექსტის შეყვანის შემდეგ, გაგზავნა ხდება ღილაკზე "შეტყობინების გაგზავნა" დაჭერით ან კლავიატურის კომბინაციით Ctrl+Enter ან Command+Enter. ინსტრუმენტი აგზავნის ერთ ტექსტურ შეტყობინებას ერთ ჯერზე.
- ზომის შეზღუდვა: შეტყობინების მაქსიმალური სიგრძეა 100,000 სიმბოლო. ლიმიტის გადაჭარბების შემთხვევაში ეკრანზე გამოჩნდება შეტყობინება: "ეს შეტყობინება უჩვეულოდ დიდია. შეინახეთ იგი 100,000 სიმბოლოების ქვეშ.".
- მონაცემთა ტიპები: ინსტრუმენტი განასხვავებს ტექსტურ და ორობით შეტყობინებებს. ტექსტური შეტყობინებები აისახება პირდაპირ ჟურნალში, ხოლო ორობითი შეტყობინებები (binary) ნაჩვენებია სპეციალური ფორმატით: "ორობითი შეტყობინება" და მისი ზომა ბაიტებში, მაგალითად, "ბაიტები".
შეტყობინებების ჟურნალი და ლიმიტები
ყველა მოვლენა, გაგზავნილი და მიღებული შეტყობინება ქრონოლოგიურად იწერება შეტყობინებების ჟურნალში. ჟურნალი მომხმარებელს აწვდის დეტალურ ინფორმაციას თითოეული აქტივობის შესახებ:
- გაგზავნილი: აღნიშნავს კლიენტის მიერ სერვერზე გაგზავნილ შეტყობინებას.
- მიღებული: აღნიშნავს სერვერიდან მიღებულ შეტყობინებას.
- ღონისძიება: აღნიშნავს სისტემურ მოვლენებს, როგორიცაა კავშირის გახსნა ან დახურვა.
- ტექსტი: მიუთითებს, რომ გადაცემული მონაცემები არის ტექსტური ფორმატის.
მეხსიერების ოპტიმიზაციისა და ბრაუზერის წარმადობის შესანარჩუნებლად, ჟურნალს გააჩნია მკაცრი ლიმიტები:
- ჩანაწერების რაოდენობა: ჟურნალი ინახავს მაქსიმუმ 500 ჩანაწერს. როდესაც ეს რაოდენობა გადაიჭარბება, ძველი ჩანაწერები ავტომატურად იშლება და ეკრანზე ჩნდება შეტყობინება: "
‹count›ჟურნალის ძველი ჩანაწერები წაიშალა ამ გვერდის რეაგირების შესანარჩუნებლად.". - სიმბოლოების ლიმიტი ჩანაწერში: თითოეული ინდივიდუალური ჩანაწერი ჟურნალში აჩვენებს მაქსიმუმ 20,000 სიმბოლოს. თუ შეტყობინება უფრო გრძელია, ის იკვეცება და ემატება შეტყობინება: "
‹count›მეტი სიმბოლო იმალება ამ გადახედვაში.".
მომხმარებელს შეუძლია ნებისმიერ დროს გამოიყენოს ფუნქცია "ჟურნალის გასუფთავება". ეს მოქმედება მხოლოდ ასუფთავებს ეკრანზე ნაჩვენებ ჩანაწერებს, მაგრამ არ წყვეტს აქტიურ კავშირს და არ აუქმებს გაგზავნილი და მიღებული შეტყობინებების მრიცხველებს ("გაგზავნილი" და "მიღებული").
კავშირის შეცდომები და დახურვის კოდები
WebSocket კავშირის დამყარებისას ან მისი აქტივობის დროს შესაძლოა წარმოიქმნას სხვადასხვა სახის შეცდომა. ინსტრუმენტი ითვალისწინებს ამ სცენარებს და მომხმარებელს აწვდის შესაბამის ინფორმაციას:
- ტაიმაუტი: თუ სერვერი არ პასუხობს კავშირის მოთხოვნას 10 წამის განმავლობაში, პროცესი წყდება და ეკრანზე იწერება: "სერვერმა არ გახსნა კავშირი 10 წამში.".
- ზოგადი შეცდომა: კავშირის წარუმატებლობის შემთხვევაში, როდესაც მიზეზი შეიძლება იყოს არასწორი მისამართი, სერტიფიკატის პრობლემა ან ქსელის წესები, გამოისახება შეტყობინება: "კავშირი ვერ მოხერხდა. შეამოწმეთ მისამართი, სერთიფიკატი, სერვერის ხელმისაწვდომობა და ბრაუზერის წვდომის წესები.".
კავშირის დახურვისას, სერვერი აგზავნის ციფრულ კოდს და დახურვის მიზეზს. ჟურნალში ეს მოვლენა აისახება შემდეგი ფორმატით: "დახურულია კოდით ‹code› (‹clean›). მიზეზი: ‹reason›".
- დახურვის სტატუსი: კავშირის დახურვა შეიძლება იყოს "სუფთა" ან "არ არის სუფთა" (unclean).
- დახურვის მიზეზი: თუ სერვერი არ აგზავნის კონკრეტულ განმარტებას, სისტემა აჩვენებს სტანდარტულ შეტყობინებას: "მიზეზი არ არის მოწოდებული".
ინსტრუმენტი მუშაობს უშუალოდ ბრაუზერის WebSocket API-ს ბაზაზე, რაც ნიშნავს, რომ მას არ შეუძლია ქსელის დონის დაბალი დონის ფრაგმენტების ან Ping და Pong საკონტროლო კადრების (control frames) ჩვენება. ასევე, მას არ აქვს შესაძლებლობა დაამატოს მორგებული ხელის ჩამორთმევის სათაურები (custom handshake headers), გვერდი აუაროს სერტიფიკატის შეცდომებს ან შეცვალოს სერვერის წვდომის წესები (CORS/Origin წესები).
მონაცემთა დამუშავება და კონფიდენციალურობა
ამ გვერდის გამოყენებისას დაცულია მონაცემთა დამუშავების მკაცრი პრინციპები. BroBroGo-ზე არაფერია ატვირთული და ამ გვერდის მიერ შენახული.
ყველა ოპერაცია და მონაცემთა გადაცემა ხორციელდება უშუალოდ მომხმარებლის ბრაუზერში. თქვენი მისამართი და შეტყობინებები პირდაპირ ბრაუზერიდან გადადის თქვენს მიერ არჩეულ WebSocket სერვერზე. ვინაიდან მონაცემები გადაეცემა პირდაპირ თქვენს მიერ მითითებულ სერვერზე, ამ სერვერის მხრიდან მონაცემთა შენახვისა და აღრიცხვის წესები სცდება ამ გვერდის კონტროლის ფარგლებს. უსაფრთხოების მიზნით, დაკავშირებამდე წაშალეთ პირადი იდენტიფიკატორები და სენსიტიური იურიდიული, ფინანსური ან ჯანმრთელობის ინფორმაცია.
ხშირად დასმული კითხვები (FAQ)
რა WebSocket მონაცემები შემიძლია შევამოწმო აქ?
თქვენ შეგიძლიათ ნახოთ თქვენი ბრაუზერის მიერ გამოქვეყნებული თითოეული ტექსტი ან ორობითი შეტყობინება, მისი მიმართულება, დრო და ზომა, პლუს საბოლოო დახურვის კოდი, მიზეზი და დახურვის სტატუსი. ბრაუზერის გვერდებს არ შეუძლიათ ქსელის დონის ფრაგმენტების ან Ping და Pong კონტროლის ჩარჩოების გამოვლენა.
რატომ იშლება კავშირი მაშინაც კი, როცა მისამართი მუშაობს სხვაგან?
დაცულ გვერდზე ბრაუზერს შეიძლება დასჭირდეს wss://. სერვერმა ასევე უნდა მიიღოს ბრაუზერის კავშირები და გვერდის საწყისი. ამ კლიენტს არ შეუძლია დაამატოს მორგებული ხელის ჩამორთმევის სათაურები, გვერდის ავლით სერტიფიკატის შეცდომებს ან გადალახოს სერვერის წვდომის წესები.
შემიძლია ტესტირება წარმოების ან მგრძნობიარე მონაცემებით?
შეძლებისდაგვარად გამოიყენეთ სინთეზური მონაცემები. გაგზავნამდე წაშალეთ სახელები, ანგარიშის დეტალები, იურიდიული ჩანაწერები, ფინანსური ინფორმაცია და ჯანმრთელობის შესახებ ინფორმაცია. შეტყობინებები მიდის თქვენს მიერ არჩეულ სერვერზე, რომლის აღრიცხვისა და შენახვის წესები ამ გვერდის კონტროლის მიღმაა.
რა არის შეტყობინებების მაქსიმალური ზომა, რომლის გაგზავნაც შემიძლია?
თქვენ შეგიძლიათ გაგზავნოთ ტექსტური შეტყობინება, რომლის სიგრძე არ აღემატება 100,000 სიმბოლოს. თუ შეყვანილი ტექსტი ამ ლიმიტზე დიდია, სისტემა არ გააგზავნის მას და მოგთხოვთ სიმბოლოების რაოდენობის შემცირებას.