message-port-main.ts 772 B

12345678910111213141516171819202122232425262728
  1. import { EventEmitter } from 'events';
  2. export class MessagePortMain extends EventEmitter {
  3. _internalPort: any
  4. constructor (internalPort: any) {
  5. super();
  6. this._internalPort = internalPort;
  7. this._internalPort.emit = (channel: string, event: {ports: any[]}) => {
  8. if (channel === 'message') { event = { ...event, ports: event.ports.map(p => new MessagePortMain(p)) }; }
  9. this.emit(channel, event);
  10. };
  11. }
  12. start () {
  13. return this._internalPort.start();
  14. }
  15. close () {
  16. return this._internalPort.close();
  17. }
  18. postMessage (...args: any[]) {
  19. if (Array.isArray(args[1])) {
  20. args[1] = args[1].map((o: any) => o instanceof MessagePortMain ? o._internalPort : o);
  21. }
  22. return this._internalPort.postMessage(...args);
  23. }
  24. }