کلادفلر gRPC رو به Workers آورد
خلاصهٔ کاملتر
به گفتهٔ کلادفلر، رشد دستیارهای صوتی و دیکتهٔ بلادرنگ باعث شده ارتباط کمتأخیر بین کلاینت، مدل و سرویسهای پشتیبان مهمتر از قبل بشه — و بخش زیادی از این زیرساخت روی gRPC سواره؛ فریمورک RPC که روی HTTP/2 و TCP کار میکنه. ورکرها تا حالا فقط اتصال TCP خروجی باز میکردن؛ حالا تو Agents Week مسیر برعکس هم باز شده و اتصال ورودی پشتیبانی میشه.
هستهٔ ماجرا یه هندلر تازه به اسم connect(socket) هست که سوکت ورودی رو از Spectrum — پراکسی ورودی کلادفلر برای ترافیک غیر HTTP — تحویل ورکر میده تا ازش بخونه و توش بنویسه. همین سوکت رو میشه به ورکر دیگه، به یه Durable Object یا از Durable Object به کانتینرش پاس داد:
export class SocketDurableObject extends DurableObject<Env> {
async connect(socket: Socket): Promise<void> {
// Echo bytes from inside the Durable Object
await socket.readable.pipeTo(socket.writable);
}
}یعنی کل مسیر از کلاینت تا سروری که تو کانتینر بالاست دست خودته و هر پروتکل مبتنی بر TCP، به هر زبونی، قابل سرو کردنه. برای اینکه سوکت خام اصلاً به دست ورکر برسه، کلادفلر یه نوع تازه از اپلیکیشن Spectrum معرفی کرده که توش مشخص میکنی اتصالهای TCP ورودی به کدوم ورکر مسیر داده بشن.
روی همین پایه، اجرای سرور gRPC داخل Cloudflare Containers با استریم کامل دوطرفه هم راه افتاده. جذابیتش برای کاربردهای صوتی بلادرنگه: درخواستها روی شبکهٔ بیش از ۳۳۰ نقطهای کلادفلر خیلی نزدیکتر به کاربر جواب میگیرن. نویسندهها میگن عملاً کمتر اپلیکیشن مبتنی بر gRPC میمونه که نشه روی کلادفلر دیپلوی کرد، فرقی هم نمیکنه با چه زبون یا وابستگیهایی نوشته شده.
برای حالت سادهتر — یه سرویس gRPC سبک یا صدا زدن یه سرور gRPC از داخل ورکر — نیازی به کانتینر نیست. مرورگرها به قابلیتهای سطحپایین HTTP/2 و سوکت TCP خام دسترسی ندارن و gRPC-web دقیقاً برای همینه؛ حالا کلادفلر درخواست gRPC ورودی رو به gRPC-web و خروجی رو برعکس ترجمه میکنه. کد رو با gRPC-web و پکیج @connectrpc/connect مینویسی و بقیهش خودکار انجام میشه. ورکرها فعلاً متدهای unary و server-streaming رو سرو میکنن.
نکات کلیدی:
- هندلر connect(socket) سوکت TCP ورودی رو از Spectrum تحویل ورکر میده
- سوکت رو میشه به ورکر دیگه، Durable Object یا کانتینر پاس داد
- سرور gRPC با استریم کامل دوطرفه، به هر زبونی، روی Cloudflare Containers بالا میآد
- ورکرها متدهای unary و server-streaming رو سرو میکنن و به سرورهای gRPC هم وصل میشن
- تبدیل خودکار gRPC به gRPC-web و برعکس؛ همهچیز فعلاً تو بتای خصوصیه




