EPIPE در Node.js پس از اتصال به پروکسی SOCKS
EPIPE در Node را پس از اتصال به نقطه پایانی SOCKS تفسیر کنید و بررسی کنید که handshake لازم کامل شده است یا نه.
رویداد connect سوکت Node به شما میگوید که TCP به پروکسی رسیده است. این را نمیگوید که پروکسی اتصالی به مقصد باز کرده است.
سرور SOCKS5 پیش از ترافیک برنامه، مذاکره روش، احراز هویت انتخابشده و درخواست مقصد را انتظار دارد. ارسال فوری درخواست HTTP میتواند باعث شود سرور اتصال را ببندد. نوشتن بعدی آنگاه میتواند EPIPE تولید کند.
EPIPE بهتنهایی اثبات نمیکند که handshake وجود ندارد. این خطا از نوشتن روی اتصالی خبر میدهد که طرف مقابل دیگر آن ارتباط را نمیپذیرد. رویدادها و پاسخهای پروتکل پیشین را بخوانید تا بفهمید طرف مقابل چرا بسته است.
از یک اتصالدهنده استفاده کنید که تبادل کامل SOCKS را پیادهسازی کند. برای کلاینت HTTPS هسته Node، یک عامل آگاه به SOCKS میتواند این مذاکره را پیش از TLS مقصد انجام دهد. اگر خودتان تبادل را پیاده میکنید، دادهها را بر پایه طول فیلدهای پروتکل جمع کنید. تضمینی نیست که یک رویداد data شامل یک پاسخ کامل باشد، و آدرس مقید بازگشتی لازم نیست با یک رشته بایتی سختکدشده مطابقت داشته باشد.
مدیریت خطا را پیش از آنکه عملیات شکست بخورد ثبت کنید، مرحله اتصال را در گزارش خطا نگه دارید و پروتکل مقصد را تنها پس از موفقیت مذاکره بفرستید. گرفتن خطا از یک رویداد مدیریتنشده جلوگیری میکند؛ اما تبادل نامعتبر را درست نمیکند.