Spaces:
Sleeping
Sleeping
RobotHub TransportServer JavaScript/TypeScript Client
A TypeScript/JavaScript client library for real-time robotics control and video streaming via the RobotHub TransportServer platform. Supports both browser and Node.js environments.
π― Purpose
This client library provides easy access to the RobotHub TransportServer from JavaScript/TypeScript applications:
- Robotics Control: Send joint commands and receive robot state updates
- Video Streaming: Stream and receive video feeds via WebRTC
- Multi-Workspace: Organize connections across isolated workspaces
- Real-time Communication: WebSocket-based bidirectional messaging
π¦ Installation
bun add @robothub/transport-server-client
π Quick Start
Robotics Control
import { robotics } from '@robothub/transport-server-client';
// Producer - Send commands to robot
const producer = new robotics.RoboticsProducer('http://localhost:8000');
await producer.connect(workspaceId, roomId);
await producer.sendJointUpdate([
{ name: 'shoulder', value: 45.0 },
{ name: 'elbow', value: -30.0 }
]);
// Consumer - Receive robot state
const consumer = new robotics.RoboticsConsumer('http://localhost:8000');
await consumer.connect(workspaceId, roomId);
consumer.onJointUpdate((joints) => {
console.log('Robot moving:', joints);
});
Video Streaming
import { video } from '@robothub/transport-server-client';
// Producer - Stream video
const videoProducer = new video.VideoProducer('http://localhost:8000');
await videoProducer.connect(workspaceId, roomId);
await videoProducer.startCamera();
// Consumer - Receive video
const videoConsumer = new video.VideoConsumer('http://localhost:8000');
await videoConsumer.connect(workspaceId, roomId);
const videoElement = document.getElementById('video');
videoConsumer.attachToVideoElement(videoElement);
π API Reference
Robotics Producer
// Connection
await producer.connect(workspaceId, roomId)
await producer.createRoom() // Auto-generates IDs
await producer.disconnect()
// Control
await producer.sendJointUpdate(joints)
await producer.sendStateSync(state)
await producer.sendEmergencyStop(reason)
Robotics Consumer
// Connection
await consumer.connect(workspaceId, roomId)
// Events
consumer.onJointUpdate(callback)
consumer.onStateSync(callback)
consumer.onError(callback)
// State
const state = await consumer.getStateSyncAsync()
Video Producer
// Streaming
await producer.startCamera(constraints)
await producer.startScreenShare()
await producer.stopStreaming()
await producer.updateVideoConfig(config)
Video Consumer
// Receiving
await consumer.startReceiving()
consumer.attachToVideoElement(videoElement)
// Events
consumer.onStreamStarted(callback)
consumer.onStreamStopped(callback)
π§ Room Management
// Create rooms and workspaces
const { workspaceId, roomId } = await producer.createRoom();
// List and manage rooms
const rooms = await producer.listRooms(workspaceId);
const roomInfo = await producer.getRoomInfo(workspaceId, roomId);
const success = await producer.deleteRoom(workspaceId, roomId);
β‘ Factory Functions
Quick setup helpers:
// Quick producer setup
const producer = await robotics.createProducerClient('http://localhost:8000');
// Quick consumer setup
const consumer = await robotics.createConsumerClient(workspaceId, roomId, 'http://localhost:8000');
π οΈ Development
# Install dependencies
bun install
# Build library
bun run build
# Type checking
bun run typecheck
Start controlling robots with JavaScript! π€β¨