在最近的2023年开发者周上,Cloudflare披露了一个新的Worker API,使开发者能够建立出站的TCP套接字。这个突破性的套接字API使开发者能够直接从Worker无缝连接到基于TCP的基础设施,现在包括数据库。到目前为止,Worker只能与HTTPendpoints 和其他Cloudflare服务进行通信;但是,大多数数据库需要客户直接建立TCP套接字。
Cloudflare的产品经理Brendan Irvin-Broque和Cloudflare的产品总监Matt Silverlock阐述了新的API:"对于Workers,我们的目标是尽可能支持跨浏览器和非浏览器环境的标准API,(...)但对于TCP套接字,我们面临一个挑战--没有明确的跨运行机制的共享标准。我们试图纳入现有API和提案的最佳元素,并打算为未来的标准做出贡献。"
在去年秋天,Cloudflare、Vercel和Shopify成立了WinterCG,这是一个新的社区团体,致力于在非网络浏览器和基于JavaScript的开发环境中创建标准化网络API的可互操作的实现。
最新的API可以通过导入cloudflare:sockets 的connect函数来访问。虽然PostgreSQL的JavaScript数据库驱动pg已经支持新的API,但MySQL驱动--mysql和mysql2还没有支持它。Irvin-Broque和Silverlock提醒说:
每个请求都会创建一个新的连接。这是目前从无服务器函数连接到数据库的最大挑战之一,跨越所有平台(......)我们已经在为最流行的数据库开发更简单的连接池方法。
Cloudflare预计在未来推出更多的功能,如支持入站的TCP和UDP连接,这是开发人员要求的,还有基于QUIC的应用协议。
在推出connect()API的同时,2023年开发者周还发布了其他几个令人兴奋的消息。其中包括推出用于安全管理应用程序秘密的Secrets Store,对D1(Cloudflare的无服务器数据库)的增强,以及Queues消息服务的消费者并发性。此外,Cloudflare还公布了Neon、PlanetScale和Supabase on Workers的数据库集成。
每个打开的TCP套接字都会对Workers可以同时维护的最大打开连接数做出贡献。请注意,在端口25上创建TCP连接以向SMTP邮件服务器发送邮件仍然是不可能的。
随着AppMaster等无代码和低代码平台的不断发展,connect()API等功能的引入将通过简化连接和为开发者创造新的机会而进一步推动开发环境。