Files
electron/docs/api/message-channel-main.md
Samuel AttardandClaude 5eefaea339 build: update @electron/lint-roller to 4.0.0 (#54139)
lint-roller 4 drops `lint-roller-markdown-standard` (and with it the
transitive eslint/standard dependency tree, roughly 1,900 lines of
yarn.lock) in favour of `lint-roller-markdown-oxlint`, which lints the JS
code blocks in docs/ with the repo's own oxlint and .oxlintrc.json. It
also makes `lint-roller-markdown-ts-check` work with TypeScript 6 and 7.

- `lint:js-in-markdown` now runs `lint-roller-markdown-oxlint`.
- `lint:docs-fiddles` ran the `standard` binary, which was only ever
  installed as a dependency of lint-roller 3, so it now runs oxlint over
  docs/fiddles instead. The dozen findings that surfaced (unused trailing
  callback parameters, one `require('path')`, one stale eslint-disable
  comment) are fixed in the fiddles, and the one tutorial that inlines an
  affected fiddle is kept in sync.
- The `<!-- eslint-... -->` HTML comments in docs were directives for
  lint-roller-markdown-standard and are removed, and the docs style guide
  no longer points at standard-markdown.

Co-authored-by: Claude <noreply@anthropic.com>
2026-09-21 00:18:36 -07:00

1.5 KiB

MessageChannelMain

MessageChannelMain is the main-process-side equivalent of the DOM MessageChannel object. Its singular function is to create a pair of connected MessagePortMain objects.

See the Channel Messaging API documentation for more information on using channel messaging.

Class: MessageChannelMain

Channel interface for channel messaging in the main process.

Process: Main

Example:

// Main process
const { BrowserWindow, MessageChannelMain } = require('electron')

const w = new BrowserWindow()
const { port1, port2 } = new MessageChannelMain()
w.webContents.postMessage('port', null, [port2])
port1.postMessage({ some: 'message' })

// Renderer process
const { ipcRenderer } = require('electron')

ipcRenderer.on('port', (e) => {
  // e.ports is a list of ports sent along with this message
  e.ports[0].onmessage = (messageEvent) => {
    console.log(messageEvent.data)
  }
})

Warning

Electron's built-in classes cannot be subclassed in user code. For more information, see the FAQ.

Instance Properties

channel.port1

A MessagePortMain property.

channel.port2

A MessagePortMain property.