Portal Community

Signature

function useEdgeStream(): IEdgeStream

Usage

import { useEdgeStream } from 'edge-stream-js-react';

function SendButton() {
  const stream = useEdgeStream();

  const handleClick = async () => {
    await stream.send('bas', 'workflow.action.trigger', {
      workflowId: 'wf-123',
      action: 'approve',
    });
  };

  return <button onClick={handleClick}>Approve</button>;
}

Accessing a Server Reference

function ServerStatusInfo() {
  const stream = useEdgeStream();

  const basServer = stream.server('bas');
  const transportStatus = basServer?.transport.status; // 'connected' | 'reconnecting' | ...

  return (
    <div>
      <p>BAS transport: {transportStatus}</p>
      <p>EdgeStream status: {stream.status}</p>
    </div>
  );
}

Subscribing Imperatively

// useEdgeStream + useEffect = manual subscription with explicit cleanup
// Prefer useSubscription() hook instead — it handles this automatically

function ManualSubscription() {
  const stream = useEdgeStream();

  useEffect(() => {
    const sub = stream.subscribe('bas', 'hil.*', (envelope) => {
      console.log('HIL event:', envelope.body);
    });
    return () => sub.unsubscribe(); // manual cleanup required
  }, [stream]);

  return <div>...</div>;
}

// Preferred: let useSubscription handle cleanup
function AutoSubscription() {
  useSubscription('bas', 'hil.*', (envelope) => {
    console.log('HIL event:', envelope.body);
  });
  return <div>...</div>;
}

Error Behavior

// useEdgeStream throws if called outside EdgeStreamProvider
function Orphan() {
  const stream = useEdgeStream();
  // Throws: "useEdgeStream must be used within <EdgeStreamProvider>"
  // This is a programming error — always mount EdgeStreamProvider above this component
}
useEdgeStream vs Direct Import If you created the EdgeStream instance at module scope, you could import it directly. Use useEdgeStream() when the client is configured externally (e.g., from a different module or injected via dependency injection) and you want components to be decoupled from the specific instance.