package poc import org.scalajs.dom import scala.scalajs.js import scala.scalajs.js.annotation.JSExport @js.native object WorkerGlobal extends js.GlobalScope { def addEventListener(`type`: String, f: js.Function): Unit = js.native def postMessage(data: js.Any): Unit = js.native } @JSExport("WorkerMain") object WorkerMain { @JSExport def main(): Unit = { WorkerGlobal.addEventListener("message", onMessage _ ) WorkerGlobal.postMessage(s"Started") } val timeMessage = """Time.*""".r var count = 0 def onMessage(msg: dom.MessageEvent) = { val s = msg.data.asInstanceOf[String] s match { case timeMessage() => count += 1 if(count % 600 == 0) WorkerGlobal.postMessage("60fps") case _ => WorkerGlobal.postMessage(s"Received: $s") } } }