@meshkit/core 包的 API 参考文档。
初始化核心模块。
async function initCore(
deviceId?: string,
deviceName?: string
): Promise<{ deviceId: string; deviceName: string }>参数:
deviceId(可选): 设备ID,不提供则自动生成deviceName(可选): 设备名称,不提供则自动生成
返回:
deviceId: 设备IDdeviceName: 设备名称
示例:
const { deviceId, deviceName } = await initCore();
console.log(`设备: ${deviceName} (${deviceId})`);连接信令服务器。
function connectSignaling(url: string): void参数:
url: 信令服务器 WebSocket URL
示例:
connectSignaling('ws://localhost:7000/ws');文件传输管理器实例。
选择要发送的文件。
selectFile(file: File): void发送文件到目标设备。
async sendFile(targetDeviceId: string): Promise<void>下载接收到的文件。
downloadFile(): void获取下载文件信息。
getDownloadInfo(): { blob: Blob; filename: string } | null示例:
// 发送文件
const file = document.getElementById('fileInput').files[0];
fileTransferManager.selectFile(file);
await fileTransferManager.sendFile(targetDeviceId);
// 下载文件
const info = fileTransferManager.getDownloadInfo();
if (info) {
fileTransferManager.downloadFile();
}设备管理器实例。
获取所有在线设备。
getDevices(): Device[]选择目标设备。
selectDevice(deviceId: string): void获取本设备信息。
getMyDevice(): Device | null类型定义:
interface Device {
id: string;
name: string;
isOnline: boolean;
lastSeen: number;
}示例:
const devices = deviceManager.getDevices();
const myDevice = deviceManager.getMyDevice();全局事件总线。
监听事件。
on(event: string, handler: Function): void取消监听。
off(event: string, handler: Function): void// 信令服务器连接
eventBus.on('signaling:connected', () => void);
eventBus.on('signaling:disconnected', () => void);// 设备列表更新
eventBus.on('device:list-updated', ({ devices }: { devices: Device[] }) => void);// 传输准备中
eventBus.on('transfer:preparing', ({ direction }: { direction: 'send' | 'receive' }) => void);
// 传输开始
eventBus.on('transfer:started', ({ direction }: { direction: 'send' | 'receive' }) => void);
// 传输进度
eventBus.on('transfer:progress', (progress: TransferProgress) => void);
// 传输完成
eventBus.on('transfer:completed', ({ direction }: { direction: 'send' | 'receive' }) => void);
// 传输错误
eventBus.on('transfer:error', (error: Error) => void);TransferProgress 类型:
interface TransferProgress {
progress: number; // 百分比 (0-100)
loaded: number; // 已传输字节数
total: number; // 总字节数
speedMB: number; // 速度 (MB/s)
remainingSeconds: number; // 剩余秒数
}全局配置对象。
获取配置项。
get<K extends keyof P2PConfig>(key: K): P2PConfig[K]设置配置项。
set<K extends keyof P2PConfig>(key: K, value: P2PConfig[K]): void配置项:
interface P2PConfig {
peerjs: {
host: string;
port: number;
path: string;
debug: number;
};
signalingServer?: {
host: string;
wsPort: number;
peerPort: number;
};
transfer: {
chunkSize: number; // 默认 1MB
sendDelay: number; // 默认 1ms
timeout: number; // 默认 300秒
};
}示例:
// 获取配置
const chunkSize = config.get('transfer').chunkSize;
// 设置配置
config.set('signalingServer', {
host: '192.168.1.100',
wsPort: 7000,
peerPort: 8000
});// 设备信息
interface Device {
id: string;
name: string;
isOnline: boolean;
lastSeen: number;
}
// 传输进度
interface TransferProgress {
progress: number;
loaded: number;
total: number;
speedMB: number;
remainingSeconds: number;
}
// P2P 配置
interface P2PConfig {
peerjs: {
host: string;
port: number;
path: string;
debug: number;
};
signalingServer?: {
host: string;
wsPort: number;
peerPort: number;
};
transfer: {
chunkSize: number;
sendDelay: number;
timeout: number;
};
}
// 文件队列项
interface FileQueueItem {
file: File;
status: 'pending' | 'transferring' | 'completed' | 'failed';
progress: number;
error?: string;
}import {
initCore,
connectSignaling,
fileTransferManager,
deviceManager,
eventBus
} from '@meshkit/core';
// 初始化
const { deviceId } = await initCore();
connectSignaling('ws://localhost:7000/ws');
// 监听设备
eventBus.on('device:list-updated', ({ devices }) => {
console.log('在线设备:', devices);
});
// 监听进度
eventBus.on('transfer:progress', (progress) => {
console.log(`进度: ${progress.progress}%`);
console.log(`速度: ${progress.speedMB} MB/s`);
});
// 发送文件
const file = document.getElementById('fileInput').files[0];
fileTransferManager.selectFile(file);
await fileTransferManager.sendFile(targetDeviceId);
// 接收文件
eventBus.on('transfer:completed', ({ direction }) => {
if (direction === 'receive') {
fileTransferManager.downloadFile();
}
});更多信息: