1.0.11 • Published 7 months ago

smart-postmessage v1.0.11

Weekly downloads
-
License
ISC
Repository
github
Last release
7 months ago

Smart Postmesage

smart postmessage is a tool to help you make a connection with iframe through postmessage.

Simplified Communication

  • 🍜 Allowing users to use requests as promises makes it more user-friendly.
  • 📡 Establishing secure communication channels between parent and child windows, support to set timeout and retry gap.
  • 📮 Request and Respond for Method Invocation
  • 📢 Subscribing to and notify events.
  • ✨ Clean and easy-to-use API.

Installation

via npm

  npm i smart-postmessage

via yarn

  yarn add smart-postmessage

Usage

Initiate

import SmartPostMessage, { MethodMap } from 'smart-post-message';

// Define the method map for observed and requested methods
interface ObservedMethods extends MethodMap {
  getData: (data: number) => number;
  userLoggedIn: () => boolean;
}

// Define the method map for notify and subscribe methods
interface NotifyMethods extends MethodMap {
  somebodyJoined: () => { userId: string };
}

// Create an instance of SmartPostMessage
// You can configure communication timeouts and retries
const smartPostMessage = new SmartPostMessage<NotifyMethods, ObservedMethods>({
  currentWindow: window,
  targetWindow: targetWindow,
  targetOrigin: 'https://example.com',
  establishTimeout: 30000,
  establishInterval: 3000,
});

// Establish a communication channel
await smartPostMessage.establish(true).then(() => {
}).catch(() => {
  // Communication failed
});

// Communication is established
// You can now send and receive messages
// ...

Requester and Responder

Initiates communication with smartPostMessage.request().

// Trigger the 'userLoggedIn' event in the server window
await smartPostMessage.request('userLoggedIn'); // return boolean.

Listens and responds with smartPostMessage.observe().

// Observe an event (e.g., 'userLoggedIn')
smartPostMessage.observe('userLoggedIn', () => {
  // Handle the event (e.g., perform some action when a user logs in)
  return true;
});

Notifying and Subscribing to Events

You can use the "notify" and "subscribe" pair for event notification:

Broadcast events using smartPostMessage.notify().

// In the notifier window
smartPostMessage.notify('somebodyJoined', { userId: 'userA' });

Listen and react to events with smartPostMessage.subscribe().

// In the subscriber window
const unsubscribe = smartPostMessage.subscribe('somebodyJoined', (data) => {
  // Handle the event data
  console.log(data);
  // { userId: 'userA' }
});

// Don't forget to unsubscribe when no longer needed
unsubscribe();

Finish the communication

smartPostMessage.finish();

License

MIT

1.0.11

7 months ago

1.0.10

8 months ago

1.0.9

8 months ago

1.0.8

8 months ago

1.0.7

8 months ago

1.0.6

8 months ago

1.0.5

8 months ago

1.0.4

8 months ago

1.0.3

8 months ago

1.0.2

8 months ago