@deviots/ 电容- tcp客户端
拥有本土Android,iOS和Electron支持的Capacitorapp的TCP客户端插件.
当您的应用程序需要直接与 TCP 设备或服务交谈时使用它, 例如
打印机,扫描仪,控制器,网关或本地网络硬件.
特征
- Android、iOS和Electron上的原生TCP套接字
- 多连接 API 与每个连接的孤立听众
- 原始写作、连续流读取和请求/答复读取
- 字节有效载荷为
number[] 或者说 Uint8Array
- 可选
expect 协议回复的匹配模式
- 用于浏览器开发的 Web stub 构建
安装
npm install @devioarts/capacitor-tcpclient
npx cap sync
Android网络权限从插件列表中自动合并.
见 开始 手动Android回落笔记
和所需的iOS设置.
快速启动
import { TCPClient } from '@devioarts/capacitor-tcpclient';
const conn = TCPClient.createConnection({
host: '192.168.1.100',
port: 9100,
timeout: 3000,
});
await conn.connect();
const reply = await conn.writeAndRead({
data: [0x1b, 0x40],
timeout: 1000,
maxBytes: 4096,
});
if (reply.error) {
console.error(reply.errorMessage);
} else {
console.log('Received bytes:', reply.data);
}
await conn.destroy();
控制器 App 示例
import { TCPClient, type TCPConnection } from '@devioarts/capacitor-tcpclient';
let connection: TCPConnection | undefined;
export async function connectToDevice(host: string) {
connection = TCPClient.createConnection({ connectionId: 'main-device', host, port: 9100 });
await connection.addListener('tcpDisconnect', ({ reason, error }) => {
console.log('TCP disconnected:', reason, error ?? '');
});
return connection.connect();
}
export async function sendCommand(command: Uint8Array) {
if (!connection) throw new Error('TCP connection is not ready');
return connection.writeAndRead({
data: command,
expect: '0d0a',
timeout: 1500,
maxBytes: 8192,
});
}
export async function disconnectFromDevice() {
await connection?.destroy();
connection = undefined;
}
文档
- 开始:安装、Android/iOS设置和操场笔记
- 使用指南:电容实例、流出、请求/响应和生命周期模式
- 电能融合:电源和手动电桥设置
- 行为和问题: 超时、缓冲、平台注释和故障排除
- API 参考: 在此 README 中生成 TypeScript API 引用
| 平台 | 状态 | 页:1 |
| 机器人 | 原生 TCP | 互联网/网络权限自动合并 |
| iOS系统 | 原生 TCP | 需要本地设备的本地网络使用描述 |
| 电子 | 原生 TCP | 使用电容或手动桥 |
| 网页 | 发展支点 | 保持相同的 API 形状,但不打开真正的 TCP 套接字 |
常见命令
npm run build
npm test
npm run verify:web
API 密码
下面生成的 API 文档根
@devioarts/capacitor-tcpclient capacitor apps使用的出入口. 手册
电桥直接在IPC上暴露出当地的方法,所以它使用
connectionId 每一次电话,而不是 createConnection()。 。 。 .
创建连接(...)
createConnection(options?: TcpCreateConnectionOptions | undefined) => TCPConnection
创建( 或检索) TCP 连接实例 .
- 没有连接Id:总是用生成的UUID创建新实例.
- 连接Id: 如果已创建, 返回已有实例 ,
否则就会产生新的问题.
- 这里提供的主机/端口/出站/无Delay/keepAlive成为连接的默认值 ().
回返情况: TCPConnection
getPluginPlatform() => Promise<TcpGetPlatformResult>
返回此插件本地执行的平台标识符
("ios""android""electron""网站").
与电容核心的区别 Capacitor.getPlatform() ——当
你需要知道TCP层是否有iOS,Android,Electron的支持,
或浏览器开发根.
回返情况: Promise<TcpGetPlatformResult>
接口
技术合作中心
由 TCPClient.createConnection () 返回的单个 TCP 连接实例 .
每个实例都有自己的插座、事件听众和生命周期.
| Prop | 类型 |
connectionId | string |
| 方法 | 签署 | 说明 |
| 连接 | (选择? ) 部分<Tcp 连接选项> QQ未定义) QQ 承诺 <TcpConnect 结果> 翻译: | 打开接头 选项与创建Connection()中提供的默认合并. 主机必须在创建连接( Connection) 中或此处存在 . |
| 断开 | (.) 承诺 <Tcp 断开连接结果> 翻译: | 关上插座 同上,注: 原地拆分完成后解决. Emits tcpDisconnect(理由:手动). |
| 已连接 | (.) 承诺 <TcpIsConnected 成果> 翻译: | |
| 正在读取 | (.) 承诺 <TcpIs 读取结果> 翻译: | |
| 写入 | (选项 : TcpWrite 选项) (中文(简体) ). 承诺 <TcpWrite 结果> 翻译: | |
| 写入和读 | (选项 : TcpWrite 读取选项) (中文(简体) ). 承诺 <TcpWriteAndRead Result (英语)> 翻译: | |
| 开始读取 | (选择? ) Tcp 开始读取选项 QQ 未定义) QQ 承诺 <TcpStart 停止执行> 翻译: | |
| 停止读取 | (.) 承诺 <TcpStart 停止执行> 翻译: | |
| 设置读取时间 | (选项 : { readTimeout: number;}}}\\ 承诺}错误:布尔; 错误: 字符串 {}无效;} | 配置流读超时 。 - 安卓:套装 SO_TIMEOUT 连续读取器套接字(在 startRead) - iOS:无-op(有I/O,没有阻断超时). - 电:设置默认值 timeout 使用的数值 writeAndRead 当没有通过明确的超时; 如果在连接前调用, 默认会被存储而不创建套接字状态条目 . |
| 添加倾听器 | (活动名:"tcpData",听众Func: (活动名: TcpData 事件(虚空) 承诺 <插件听筒> 翻译: | 订阅为流数据. 只有此连接Id的事件才会被发送 . |
| 添加倾听器 | (活动名:"tcpDisk",听众Func: (活动名: Tcp 断开事件(虚空) 承诺 <插件听筒> 翻译: | 订阅此连接的断开通知 . |
| 删除全部收听器 | (.) 承诺<有效> | 删除所有通过此实例注册的听众 . |
| 销毁 | (.) 承诺<有效> | 断开连接, 删除所有收听者, 即使收听者清理失败, 也会从注册中释放此实例 . |
TcpConnect 结果
| Prop | 类型 |
error | boolean |
errorMessage | string | null |
connected | boolean |
Tcp 连接选项
| Prop | 类型 | 说明 |
host | string | 主机名或IP地址 。 需要( 这里或创建连接) . |
port | number | TCP端口,默认为9100. 有效范围为1.65535. |
timeout | number | 连接超时以毫秒计,默认为3000. 包括DNS和套接字连接预算. |
noDelay | boolean | 启用 TCP NODELAY (鼻音关闭)。 默认真实. |
keepAlive | boolean | 启用 SO KEINALIVE 。 默认真实. |
Tcp 断开连接结果
| Prop | 类型 |
error | boolean |
errorMessage | string | null |
disconnected | boolean |
reading | boolean |
TcpIsConnected 成果
| Prop | 类型 |
error | boolean |
errorMessage | string | null |
connected | boolean |
TcpIs 读取结果
| Prop | 类型 |
error | boolean |
errorMessage | string | null |
reading | boolean |
TcpWrite 结果
| Prop | 类型 |
error | boolean |
errorMessage | string | null |
bytesSent | number |
TcpWrite 选项
TcpByte 箭头类似
类似字节的数组被写入 API 所接受.
支持Uint8Array是因为它有数值索引和长度.
TcpWriteAndRead Result (英语)
| Prop | 类型 |
error | boolean |
errorMessage | string | null |
bytesSent | number |
bytesReceived | number |
data | number[] |
matched | boolean |
TcpWrite 读取选项
| Prop | 类型 | 说明 |
data | TcpBytePayload | |
timeout | number | RR超时数为ms. 默认1000. 值 QQ 0 回到默认值 . |
maxBytes | number | 要累积的最大字节 。 默认为4096,封顶为16 MiB. |
expect | string | TcpBytePayload | 可选模式——找到后停止读取. 接受数字 [] / Uint8Array 或 十六进制字符串(例如"1B40","0x1b 0x40"). 空值被视为无预期模式 . |
suspendStreamDuringRR | boolean | 在 RR 期间暂停流读取器, 以避免消耗回复 。 默认真实. |
TcpStart 停止执行
| Prop | 类型 |
error | boolean |
errorMessage | string | null |
reading | boolean |
Tcp 开始读取选项
| Prop | 类型 | 说明 |
chunkSize | number | 以字节形式流出读取块大小 。 默认为4096,封顶为16 MiB. - Android/iOS:每个本地套接字的大小在桥上微打前读取. - 电:微打后每发射tcpData事件的最大字节. |
readTimeout | number | 流读超时数以毫秒计。 - 安卓:套装 SO_TIMEOUT 为连续的读者。 iOS: no-op. Electron:更新每次连接默认值 writeAndRead 超时; 流读取器本身仍由事件驱动 . |
插件听筒
| Prop | 类型 |
remove | () => Promise<void> |
TcpData 事件
被溪读取者所入. 连接ID 识别哪个连接发送数据 .
| Prop | 类型 |
connectionId | string |
data | number[] |
Tcp 断开事件
连接关闭时发出通知 .
| Prop | 类型 |
connectionId | string |
disconnected | true |
reading | boolean |
reason | 'error' | 'manual' | 'remote' |
error | string |
Tcp 创建连接选项
TCPClient.createConnection () 的选项.
所有字段都是可选的. 这里设置的主机/ 端口和其他连接选项变为
在返回实例上调用每个连接的默认值 .
| Prop | 类型 | 说明 |
connectionId | string | 此连接的可选稳定标识符 。 如果在登记簿中已经存在这种身份证明,则按原样返回。 允许每次用生成的 UUID 获取新实例 . |
| Prop | 类型 |
error | boolean |
errorMessage | string | null |
platform | TcpPlatform |
类型异名
部分
让 T 中的所有属性可选
{ [P in keyof T]?: T[P]; }
TcpBytePay 负荷
被写入 API 接受的字节有效载荷 。 值必须是0.255范围内的整数字节.
number[] | TcpByteArrayLike
'ios' | 'android' | 'web' | 'electron'
许可证
麻省理工学院