Падзея connect у сокеце Node паведамляе, што TCP дасягнуў проксі. Яна не сведчыць, што проксі адкрыў злучэнне з прызначэннем.

Сервер SOCKS5 чакае ўзгадненне метаду, выбраную аўтэнтыфікацыю і запыт прызначэння перад трафікам прыкладання. Калі адразу адправіць HTTP-запыт, сервер можа зачыніць злучэнне. Наступны запіс тады можа выклікаць EPIPE.

Адзін EPIPE не даказвае адсутнасць handshake. Ён паведамляе пра запіс у злучэнне, боку якога ўжо не прымаюць гэтую камунікацыю. Чытайце папярэднія падзеі і адказы пратаколу, каб даведацца, чаму бок зачыніў злучэнне.

Выкарыстоўвайце канэктар, які рэалізуе поўны абмен SOCKS. Для базавага HTTPS-кліента Node агент з падтрымкай SOCKS можа выканаць гэтае ўзгадненне да TLS прызначэння. Калі вы рэалізуеце абмен самі, назапашвайце даныя згодна з даўжынямі палёў пратаколу. Адна падзея data не абавязкова змяшчае адзін поўны адказ, а вернуты звязаны адрас не абавязаны супадаць з адным зашытым у код радком байтаў.

Зарэгіструйце апрацоўку памылак да таго, як аперацыя можа праваліцца, захавайце этап злучэння ў справаздачы пра памылку і адпраўляйце пратакол прызначэння толькі пасля паспяховага ўзгаднення. Перахоп памылкі прадухіляе неапрацаваную падзею; ён не выпраўляе няправільны абмен.

Падобныя артыкулы