曲速节点
曲速节点 是允许您本地运行的 HTTP 服务器的简单工具
拥有一个公开的URL,作为服务的一种容易自收自支的选择
喜欢 ngrok. 为 Node.js 和其他 JavaScript 运行时间执行 Warp 节点
目标是提供灵活性和最低限度的依赖.
该项目有两个主要组成部分:
- 服务器:可以部署在服务器上,它连接外部世界,并且是 从任意域访问.
- 客户端: 本地运行以连接本地运行的 HTTP 端点 或非公共网络.
安装
npm install @deco-cx/warp-node
所需资源
- 节点.js 22+(对于节点.js环境 - 需要承诺 ). 有resolvers支持)
- 在 Cloudflare 工人、Deno 和其他 JavaScript 运行时间工作
服务器
Warp 服务器打开一个单独的 HTTP 端口,Warp 客户端连接到该端口 升级到 WebSocket 连接。 向此 HTTP 端口转发每个请求 (基于客户端的 HOST 头) 到相应的连接的 Wart 客户端 连接,然后满足请求.
使用量
要启动 Warp 服务器,请导入 serve 从 Warp 软件包和
用适当的配置调用它.
示例
import { serve } from "@deco-cx/warp-node";
const port = 8080; // The port where the Warp server will listen
const apiKeys = ["YOUR_API_KEY1", "YOUR_API_KEY2"]; // Array of API keys for authentication
const server = serve({ port, apiKeys });
console.log(`Warp server listening on port ${port}`);
参数
port: Warp 服务器将监听连接的端口号码.apiKeys: 用于客户端认证的API密钥阵列.
客户端
Warp客户端连接到Warp服务器. 连接后,客户共享 指定 API 密钥及其想要接收请求的域.
使用量
要连接客户端到 Warp 服务器,请导入 connect 函数从
曲速包并用适当的配置调用.
示例
import { connect } from "@deco-cx/warp-node";
const port = 3000; // The local port you want to expose
const domain = "www.your.domain.com"; // The domain name for your service
const server = "wss://YOUR_SERVER"; // The WebSocket URL of your Warp server
const apiKey = "YOUR_API_KEY"; // The apiKey
const { registered, closed } = await connect({
domain,
localAddr: `http://localhost:${port}`,
server,
apiKey,
});
await registered;
console.log("Client registered successfully");
closed.then(() => {
console.log("Connection closed");
});
参数
domain: 访问您本地主机服务的域名 .localAddr:您想要曝光的服务的地方地址(例如,http://localhost:3000) (中文(简体) ).server: 您 Warp 服务器的 WebSocket URL( 例如, ),wss://YOUR_SERVER) (中文(简体) ).apiKey: 连接到 Warp 服务器的 apiKey .
返回值
registered: 当客户端成功时解决的承诺 在服务器上注册.closed:当连接到服务器的连接关闭时解决的许诺.
示例工作流程
以下是建立Warp服务器和客户端的完整例子:
服务器
import { serve } from "@deco-cx/warp-node";
const port = 8080;
const apiKeys = ["YOUR_API_KEY1", "YOUR_API_KEY2"];
const server = serve({ port, apiKeys });
console.log(`Warp server listening on port ${port}`);
客户端
import { connect } from "@deco-cx/warp-node";
const port = 3000;
const domain = "www.your.domain.com";
const server = "wss://YOUR_SERVER";
const apiKey = "API_KEY";
(async () => {
const { registered, closed } = await connect({
domain,
localAddr: `http://localhost:${port}`,
server,
apiKey,
});
await registered;
console.log("Client registered successfully");
closed.then(() => {
console.log("Connection closed");
});
})();
运行时间相容性
Warp节点被设计为跨越多个JavaScript运行时间的工作:
- 节点.js 22+: 完全支持本地 HTTP 和 WebSocket 处理
- 云花岗工人: 工作与 WebSocketPair API
- 德诺: 与 Deno 的 WebSocket 执行兼容
- 阿宝: 应该与 Bun 的 WebSocket 支持合作
库自动检测运行时环境并使用 适当的API.
类型脚本支持
这个包包括了完整的TypeScript定义. 无额外 @types
需要软件包.
import {
connect,
type ConnectOptions,
type HandlerOptions,
serve,
} from "@deco-cx/warp-node";
解决问题
共同问题
- 无效的 API 密钥: 确保您使用的 API 密钥在
apiKeys服务器上的数组. - 连接被拒绝: 检查服务器是否运行并可在 指定 WebSocket URL.
- 域无法访问: 确保域名配置正确 指向Warp服务器.
- 节点.js 版本:确保您完全使用节点22或以后使用 兼容性.
捐款
此工程为开源. 提出问题或 拉请求.
许可证
麻省理工学院执照 - 看 自由主义 详细文件.