По повторно поврзување на WebSocket преку прокси, вратете ја и сесијата
Намерно вратете ги претплатите на апликацијата и неизвесната состојба на пораките откако ќе се воспостави нова WebSocket врска преку прокси.
Повратниот повик за повторно поврзување се извршува и новиот сокет се отвора. Тоа е обнова на транспортот. Тоа не значи нужно дека вашите претплати, потврди на пораки или сесијата на апликацијата продолжиле таму каде што застана претходната врска.
Дури и истата крајна точка на прокси може да создаде нова излезна врска. Променетата излезна IP исто така може да ја активира сопствената политика за сесии на одредиштето. Третирајте го новиот сокет како нова врска и следете ја документираната размена за обнова на апликацијата. Одлучете дали работниот тек треба да ја задржи својата прокси рута при повторно поврзување.
Задржете малку повеќе од последниот URL
Корисната состојба за обнова може да вклучува овластен идентитет на сесија, сакани претплати, идентификатор на последниот потврден настан и операции што сè уште чекаат потврда. Тие полиња ѝ припаѓаат на протоколот на апликацијата; WebSocket не дефинира универзален токен за продолжување.
Одлучете дали да продолжите од курсор, да добиете нова слика на состојбата или да прифатите празнина. Ако изворот на настани не нуди интерфејс за повторно пуштање, побрзото повторно поврзување не може да докаже дека ниту една порака не е изгубена.
Праќање двапати може да значи правење двапати
Порака ставена локално во ред пред прекин можеби никогаш не го напуштила клиентот. Друга можеби стигнала до серверот додека нејзината потврда била изгубена. Слепото повторно праќање на секоја непотврдена команда ги третира тие два случаи како исти.
Користете ги идентификаторите на барања на услугата, поддршката за идемпотентност или механизмот за усогласување каде што се достапни. Повторното поврзување на транспортот не може да направи дејство на апликацијата повратно ниту автоматски да го отстрани неговото дупликат.
Одржувајте ги обидите за повторно поврзување ограничени и темпото во согласност со политиката на апликацијата. RFC 6455 препорачува повлекување по ненормално затворање; мноштво клиенти што веднаш повторно обидуваат може да го зголемат оптоварувањето за време на прекинот.
Забележете која прокси рута ја избрал секој обид, но држете ја обновата на рутата одделно од обновата на апликацијата. „Повторно поврзано“ е корисен доказ. „Стигнавме и сме подготвени да поднесеме повеќе работа“ бара дополнителна размена на апликацијата што го утврдува тоа.