🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@playertwo/transport-iframe-bridge

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@playertwo/transport-iframe-bridge

Iframe-based transport for sandboxed multiplayer testing

latest
Source
npmnpm
Version
0.2.0
Version published
Maintainers
1
Created
Source

@playertwo/transport-iframe-bridge

Iframe-based transport for sandboxed multiplayer testing. Enables local two-player testing in sandboxed iframes, perfect for IDE dual-view mode.

Features

  • ✅ Works across sandboxed iframe boundaries
  • ✅ Fast local testing (postMessage instead of WebRTC)
  • ✅ Simple parent-child architecture
  • ✅ Supports unicast and broadcast messages
  • ✅ Automatic peer discovery

Architecture

┌─────────────────────────────────────┐
│   Parent Window (IDE Component)    │
│                                     │
│  ┌─────────────────────────────┐   │
│  │   IframeBridgeRelay         │   │
│  │   (message hub)             │   │
│  └──────────┬──────────────┬───┘   │
│             │              │        │
│      postMessage      postMessage   │
│             │              │        │
│  ┌──────────▼──────┐ ┌─────▼──────┐│
│  │ Host Iframe     │ │Client Iframe││
│  │ IframeBridge    │ │IframeBridge ││
│  │ Transport       │ │Transport    ││
│  └─────────────────┘ └────────────┘│
└─────────────────────────────────────┘

Usage

In Parent Window

import { IframeBridgeRelay } from '@playertwo/transport-iframe-bridge';

// Create relay (message hub)
const relay = new IframeBridgeRelay();

// Iframes will auto-register when they create transport instances

In Iframe (User's Game Code)

import { IframeBridgeTransport } from '@playertwo/transport-iframe-bridge';
import { GameRuntime } from '@playertwo/core';
import { myGame } from './game';

// Create transport (auto-registers with parent relay)
const transport = new IframeBridgeTransport({
  roomId: 'my-room',
  isHost: true
});

// Create runtime
const runtime = new GameRuntime(myGame, transport, { isHost: true });

Comparison with LocalTransport

FeatureLocalTransportIframeBridgeTransport
Use CaseSame JS contextSandboxed iframes
SpeedInstant (direct calls)Near-instant (postMessage)
IsolationNo sandboxFull sandbox isolation
TestingUnit tests, DualViewDemoIDE dual-view, sandboxed tests

When to Use

  • IDE dual-view mode - Two sandboxed iframes on same page
  • Sandboxed testing - When you need iframe isolation
  • Local development - Fast iteration without network

When NOT to Use

  • Production multiplayer - Use TrysteroTransport for P2P
  • Unit tests - Use LocalTransport (faster, simpler)
  • Same-page without iframes - Use LocalTransport

API

IframeBridgeTransport

class IframeBridgeTransport implements Transport {
  constructor(config: IframeBridgeConfig);

  send(message: WireMessage, targetId?: string): void;
  onMessage(handler: (msg: WireMessage, senderId: string) => void): () => void;
  onPeerJoin(handler: (peerId: string) => void): () => void;
  onPeerLeave(handler: (peerId: string) => void): () => void;
  onHostDisconnect(handler: () => void): () => void;

  getPlayerId(): string;
  getPeerIds(): string[];
  isHost(): boolean;
  disconnect(): void;
}

IframeBridgeRelay

class IframeBridgeRelay {
  constructor();

  // Auto-registers iframes via postMessage
  // No manual registration needed in most cases

  getPeers(): PeerInfo[];
  getPeersInRoomById(roomId: string): PeerInfo[];
  destroy(): void;
}

License

MIT

Keywords

playertwo

FAQs

Package last updated on 31 Jan 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts