A simple JavaScript library providing an asynchronous method call interface for Workers, Iframes and cross-window contexts using postMessage.
npm install shared-ipc
import {
makeIpcRequest,
sendIpcMessage,
addMessageHandler,
handleMessage
} from "shared-ipc";
// In both frames/workers:
window.addEventListener("message", handleMessage);
// Add message handlers
addMessageHandler("greet", (name) => {
return `Hello ${name}!`;
});
// In parent frame communicating with iframe:
const iframe = document.getElementById("my-iframe");
await makeIpcRequest(iframe, "greet", "World"); // Returns "Hello World!"
// Or send a message without waiting for response
sendIpcMessage(iframe, "notification", { type: "alert" });
Makes an IPC request and returns a promise that resolves with the response.
Sends an IPC message without waiting for a response.
Adds a handler function for a specific message type.
The message event handler that processes incoming messages.
Utility class used internally for managing promise resolution.
Type | Window (Browser) | Worker (Browser) | MessagePort (Node) |
---|---|---|---|
Window (Browser) | ✅ Yes | ✅ Yes | ❌ No |
Worker (Browser) | ✅ Yes | ✅ Yes | ❌ No |
Iframe (Browser) | ✅ Yes | ✅ Yes | ❌ No |
MessagePort (Node) | ❌ No | ❌ No | ✅ Yes |
Worker (Node) | ❌ No | ❌ No | ✅ Yes |
MIT