const http = require('http'); const express = require('express'); const Worker = require("webworker-threads").Worker; const app = express(); const server = http.Server(app); var worker = new Worker(function(){ postMessage("Init"); function delay(milliseconds) { let time = new Date().getTime() + milliseconds; while (new Date().getTime() < time) { } } let variable = 0; this.addEventListener("data",function(data){ postMessage(data); variable = data.variable; }); this.onmessage = function(event) { if (event.data.variable) variable = event.data.variable; else{ for (var i = 0; i < event.data; i++) { postMessage(i + " " + variable); delay(1000); } } self.close(); }; }); worker.onmessage = function(event) { console.log(event.data); }; app.get('/a', (req, res) => { worker.postMessage(10); res.json('Success'); }); app.get('/b', (req, res) => { worker.dispatchEvent("data", {variable: 1}); res.json('Success'); }); server.listen(80); 

When you open the route /a in the console everything is displayed correctly

 0 0 1 0 

and so on. But when opening /b during the execution of the previous task, the process stops completely and refuses to start. In general, it is required during WebWorker operation to transfer some data to it. There is a solution?

  • RTFM: ".dispatchEvent (event) Currently unimplemented ." - Pavel Mayorov
  • @PavelMayorov, what are the suggestions for performing this task? - coopjmz

0