Katman
Integrations

Message Port

Use Katman over MessagePort — Electron, browser extensions, Web Workers.

Katman can run over any MessagePort-compatible channel — Electron IPC, browser extension ports, Web Workers, iframes.

Server side

Attach your router to a port:

import {  } from "katman/message-port"
import {  } from "./router"

const  = getPort() // MessagePort, Worker, chrome.runtime.Port, etc.

(, , {
  : () => ({
    : getDB(),
  }),
})

Client side

Connect to the same port from the other end:

import {  } from "katman/message-port"
import {  } from "katman/client"
import type {  } from "./router"

const  = getPort()

const  = <>({
  : [new ()],
})

const  = await .users.list()

Electron example

// main.ts (main process)
import {  } from "katman/message-port"

ipcMain.handle("rpc-port", () => {
  const { ,  } = new MessageChannelMain()
  (appRouter, , { : () => ({}) })
  .senderFrame.postMessage("rpc-port", null, [])
})
// renderer.ts (renderer process)
import {  } from "katman/message-port"
import {  } from "katman/client"

const  = await getElectronPort()
const  = <>({
  : [new ()],
})

What's next?

On this page