multica/apps/gateway/test-client.ts
Naiyuan Qing 6ef58a0cab refactor: restructure to monorepo architecture
- Move core agent engine to packages/core/
- Add packages/types/ for shared TypeScript types
- Add packages/utils/ for utility functions
- Add apps/cli/ for command-line interface
- Add apps/gateway/ for NestJS WebSocket gateway
- Add apps/server/ for REST API server
- Restructure desktop app (electron/ → src/main/, src/preload/)
- Update pnpm workspace configuration
- Remove legacy src/ directory

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-10 18:00:23 +08:00

74 lines
2.1 KiB
TypeScript

import {
GatewayClient,
type ConnectionState,
type RoutedMessage,
type SendErrorResponse,
} from "@multica/sdk";
const HelloAction = "hello";
const HelloResponseAction = "hello:response";
type HelloPayload = { greeting: string };
type HelloResponsePayload = { reply: string };
// 模拟一个 Client
const client = new GatewayClient({
url: "http://localhost:3000",
deviceId: "client-001",
deviceType: "client",
});
// 模拟一个 Agent
const agent = new GatewayClient({
url: "http://localhost:3000",
deviceId: "agent-001",
deviceType: "agent",
});
// Agent 监听消息
agent
.onStateChange((state: ConnectionState) => console.log("[Agent] State:", state))
.onRegistered((deviceId: string) => {
console.log("[Agent] Registered as:", deviceId);
})
.onMessage((message: RoutedMessage) => {
console.log("[Agent] Received message:", message);
// 回复消息
if (message.action === HelloAction) {
const payload = message.payload as HelloPayload;
console.log("[Agent] Replying to client...");
agent.send<HelloResponsePayload>(message.from, HelloResponseAction, {
reply: `Hello ${message.from}! I received: "${payload.greeting}"`,
});
}
})
.onSendError((error: SendErrorResponse) => console.error("[Agent] Send error:", error))
.connect();
// Client 监听消息
client
.onStateChange((state: ConnectionState) => console.log("[Client] State:", state))
.onRegistered((deviceId: string) => {
console.log("[Client] Registered as:", deviceId);
// 注册后发送消息给 Agent
setTimeout(() => {
console.log("[Client] Sending message to agent-001...");
client.send<HelloPayload>("agent-001", HelloAction, {
greeting: "Hello Agent!",
});
}, 500);
})
.onMessage((message: RoutedMessage) => {
console.log("[Client] Received message:", message);
})
.onSendError((error: SendErrorResponse) => console.error("[Client] Send error:", error))
.connect();
// 5秒后断开
setTimeout(() => {
console.log("\nClosing connections...");
client.disconnect();
agent.disconnect();
process.exit(0);
}, 5000);