Skip to content
Snippets Groups Projects
Select Git revision
  • 11bcaff1c906ab04f177a77154596786ef52c634
  • release default
  • 11-22-implement-kv-interface-defined-in-collectiveversionedkvgo
  • master protected
  • XX-4688/DbEncoding
  • hotfix/update
  • @XX-4682/Files
  • hotfix/XX-4655
  • dev protected
  • project/HavenNotifications
  • XX-4602/SilentMessageType
  • jono/npmTest
  • wasmTest2
  • XX-4461/FileUpload
  • XX-4505/blockuser
  • XX-4441
  • Jakub/Emoji-CI-Test
  • testing/websockets
  • fastReg
  • fast-registration
  • NewHostPool
  • v0.3.22
  • v0.3.21
  • v0.3.20
  • v0.3.18
  • v0.3.17
  • v0.3.16
  • v0.3.15
  • v0.3.14
  • v0.3.13
  • v0.3.12
  • v0.3.11
  • v0.3.10
  • v0.3.9
  • v0.3.8
  • v0.3.7
  • v0.3.6
  • v0.3.5
  • v0.3.4
  • 812b395df518ce096d01d5292596ca26f8fe92d9c4487ddfa515e190a51aa1a1
  • 76ba08e2dfa1798412a265404fa271840b52c035869111fce8e8cdb23a036a5a
41 results

logging

  • Clone with SSH
  • Clone with HTTPS
  • Web Worker API

    This package allows you to create a Javascript Web Worker from WASM and facilitates communication between the web worker and the main thread using a messaging system.

    Creating a Worker

    Web workers have two sides. There is the main side that creates the worker thread and the thread itself. The thread needs to be compiled into its own WASM binary and must have a corresponding Javascript file to launch it.

    Example main.go:

    package main
    
    import (
    	"fmt"
    	"gitlab.com/elixxir/xxdk-wasm/worker"
    )
    
    func main() {
    	fmt.Println("Starting WebAssembly Worker.")
    	tm := worker.NewThreadManager("exampleWebWorker", true)
    	tm.SignalReady()
    	<-make(chan bool)
    }

    Example WASM start file:

    importScripts('wasm_exec.js');
    
    const go = new Go();
    const binPath = 'xxdk-exampleWebWorker.wasm'
    WebAssembly.instantiateStreaming(fetch(binPath), go.importObject).then((result) => {
        go.run(result.instance);
    }).catch((err) => {
        console.error(err);
    });

    To start the worker, call worker.NewManager with the Javascript file to launch the worker.

    m, err := worker.NewManager("workerWasm.js", "exampleWebWorker", true)
    if err != nil {
    return nil, err
    }