Skip to content

Transferable support #51

Open
Open

Description

@qm3ster

Hi!
Do you think you could include a way to pass Transferable objects correctly?
It would be great to be able to return a MessagePort so that the function can return a stream instead of a single value.

Activity

  1. developit commented on Aug 26, 2018

    @developit
    Owner

    Absolutely! We added it to greenlet in only a few bytes, the same solution should work reasonably well here. It would only auto-detect transferables passed directly as arguments, not within nested objects:

    https://github.com/developit/greenlet/blob/master/greenlet.js#L25-L29

  2. cpoopc commented on Apr 7, 2019

    @cpoopc

    look forward to it..

  3. NicolasRannou commented on Mar 24, 2020

    @NicolasRannou

    Hi I'm a bit late to the party but it seems unclear to me... Are transferable objects supported by workerize or not?

  4. developit commented on May 7, 2020

    @developit
    Owner

    They are not currently supported.

  5. shayke commented on May 18, 2020

    @shayke

    Absolutely! We added it to greenlet in only a few bytes, the same solution should work reasonably well here. It would only auto-detect transferables passed directly as arguments, not within nested objects:

    https://github.com/developit/greenlet/blob/master/greenlet.js#L25-L29

    May I ask why only direct arguments? Why not detecting ArrayBuffers nested inside an object or an array?

  6. naoak commented on Dec 15, 2020

    @naoak

    I was thinking of a way to specify a loader option for how to extract the transferable from the arguments and return value of a worker method, but I realized that it would be impossible to determine the best option for each worker method with just one loader option. Instead, the approach I took was to call setup functions on both the worker and the main thread side to determine how to extract the transferables for each worker method. I've made a helper module to achieve this.

    https://github.com/naoak/workerize-transferable

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions