joltup / react-native-threads

Create new JS processes for CPU intensive work
MIT License
756 stars 142 forks source link

Got the project running, but `postmessage` never reaches my `worker.thread.js` #90

Open Genhain opened 5 years ago

Genhain commented 5 years ago

I had to manually install as automatic would never run. however i eventually got it running and have placed breakpoints in XCode and confirm that postmessage is being called but the said message never reaches my worker.thread.js

I also had to specify an absolute path for it to work like so

componentDidMount() {
    this.fetchPartiesAndPopulatePartyList()
    this.workerThread = new Thread('src/app/components/party/worker.thread.js')
    this.workerThread.onmessage = this.handleMessage;

    setTimeout(() => {
      this.workerThread.postMessage('Hello')
    }, 1000);

  }

otherwise it would say the file did not exist.

and here is my worker thread.js

import { self } from 'react-native-threads';
import Reactotron from 'reactotron-react-native'

console.tron = { log: Function.prototype };

if (__DEV__) {
  Reactotron
    .configure()
    .useReactNative()
    .connect();

  console.tron = Reactotron;
}

let count = 0;

self.onmessage = message => {
  console.tron.log(`THREAD: got message ${message}`);

  count++;

  self.postMessage(`Message #${count} from worker thread!`);
}
vishalnarkhede commented 5 years ago

I have the same issue!! Did you manage to find a solution @Genhain?

mauriciopf commented 4 years ago

@vishalnarkhede @Genhain did you find the solution for this issue?

mauriciopf commented 4 years ago

@vishalnarkhede @Genhain When the callback gets called from listeningDeviceEventEmitter.addListener('ThreadMessage', (message) => { Doing a console of self it seems that onmessage is null thats why Im assuming self.onmessage is never called { onmessage: null, postMessage: [Function: postMessage] }

Can someone tell if this is true?

liran commented 4 years ago

In my case:

// main
// start a new react native JS process
const thread = new Thread('thread.js');
// send a message, strings only
thread.postMessage('run');

// thread
// listen for messages
self.onmessage = (message) => {
  console.log(message);
};

However, no message is received in the Thread.js. My react-native version: 0.63.2