通过 VPC 网络上的 connect() 进行 TCP 连接
VPC 网络(VPC Network) 绑定(binding)现在除了支持通过 fetch() 进行 HTTP 流量传输外,还支持用于指向私有目标的原始 TCP 连接的 connect() Socket API。
这意味着 Workers 现在可以向通过绑定的 Cloudflare Tunnel、Cloudflare Mesh 或 Cloudflare WAN 接入端(on-ramp)可达的任何私有服务打开 TCP 套接字 —— 包括 Redis、Memcached、MQTT、自定义二进制协议或任何其他基于 TCP 的服务。
{
"$schema": "./node_modules/wrangler/config-schema.json",
"vpc_networks": [
{
"binding": "PRIVATE_NETWORK",
"network_id": "cf1:network",
"remote": true
}
]
}[[vpc_networks]]
binding = "PRIVATE_NETWORK"
network_id = "cf1:network"
remote = true在运行时,在绑定上使用 connect() 以向私有目标打开 TCP 套接字:
export default {
async fetch(request: Request, env: Env) {
// Open a TCP connection to a private Redis instance
const socket = await env.PRIVATE_NETWORK.connect("10.0.1.50:6379");
// Write a Redis PING command
const writer = socket.writable.getWriter();
await writer.write(new TextEncoder().encode("PING\r\n"));
await writer.close();
return new Response(socket.readable);
},
};有关更多详细信息,请参阅 VPC 网络(VPC Networks) 和 Workers 绑定(Binding)API。