mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
544940807f
* feat(pico): add pico_client outbound WebSocket channel Add a client-mode counterpart to the existing pico server channel. pico_client connects to a remote Pico Protocol WebSocket server, enabling picoclaw to bridge messages with external Pico-compatible services. Includes config, factory registration, manager wiring, 8 unit tests, and a minimal echo-server example for interactive testing. * fix(pico): address PR #1198 review — goroutine leak, race, auth - Add per-connection context cancel to picoConn to prevent pingLoop goroutine leak on disconnect - Re-acquire mutex in StartTyping stop closure to avoid stale conn race - Remove query-param token auth from echo server (header-only) - Move ListenAndServe to main goroutine where log.Fatal is safe Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: replace ConsumeInbound with InboundChan select in client test MessageBus does not expose a ConsumeInbound method. Use a select on InboundChan() with context cancellation, matching the pattern used in the bus package tests. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1.2 KiB
1.2 KiB
pico-echo-server
Minimal Pico Protocol WebSocket server for testing the pico_client channel.
Usage
go run ./examples/pico-echo-server -addr :9090 -token secret
Flags
| Flag | Default | Description |
|---|---|---|
-addr |
:9090 |
Listen address |
-token |
(none) | Auth token; empty disables auth |
How it works
- Listens for WebSocket connections at
/ws - Authenticates via
Authorization: Bearer <token>header or?token=<token>query param - Prints received
message.sendcontent to stdout - Responds to
pingwithpong - Lines typed into stdin are broadcast as
message.createto all connected clients
Testing with pico_client
-
Start the server:
go run ./examples/pico-echo-server -token mytoken -
Configure
pico_clientin yourconfig.json:{ "channels": { "pico_client": { "enabled": true, "url": "ws://localhost:9090/ws", "token": "mytoken", "session_id": "test-session" } } } -
Start picoclaw — the client connects and you can exchange messages interactively via stdin/stdout.