跳转到内容
搜索文档

更新日志

Cloudflare 的最新更新与改进。

Back to all posts

通过 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