Повратни позив за поновно повезивање се извршава и нови сокет се отвара. То је опоравак транспорта. То не значи нужно да су ваше претплате, потврде порука или сесија апликације наставиле тамо где је претходна веза стала.

Чак и иста проксијска крајња тачка може створити нову одлазну везу. Промењена излазна IP адреса такође може покренути сопствену политику сесије одредишта. Третирајте нови сокет као нову везу и пратите документовану размену опоравка апликације. Одлучите да ли радни ток треба да задржи своју проксијску руту при поновном повезивању.

Задржите мало више од последњег URL-а

Корисно стање опоравка може укључивати овлашћени идентитет сесије, жељене претплате, идентификатор последњег потврђеног догађаја и операције које још чекају потврду. Та поља припадају протоколу апликације; WebSocket не дефинише универзални токен за наставак.

Одлучите да ли ћете наставити од курсора, преузети нову слику стања или прихватити празнину. Ако извор догађаја не нуди интерфејс за репродукцију, брже поновно повезивање не може доказати да ниједна порука није пропуштена.

Слање двапут може значити и извршавање двапут

Порука стављена у локални ред пре прекида можда никада није напустила клијент. Друга је можда стигла до сервера док је њена потврда изгубљена. Слепо поновно слање сваке непотврђене наредбе третира та два случаја као идентична.

Користите идентификаторе захтева услуге, подршку за идемпотентност или механизам усклађивања где су доступни. Поновно повезивање транспорта не може учинити радњу апликације реверзибилном нити је аутоматски уклонити из дупликата.

Ограничите покушаје поновног повезивања и прилагодите темпо политици апликације. RFC 6455 препоручује одустајање након ненормалног затварања; мноштво клијената који одмах покушавају поново може повећати оптерећење током прекида.

Забележите коју је проксијску руту изабрао сваки покушај, али држите опоравак руте одвојеним од опоравка апликације. „Поново повезано“ је користан доказ. „Стигли и спремни да пошаљу још посла“ захтева додатну размену апликације која то утврђује.

Повезани чланци