bidirectional communication

pull/2/head
vedhavyas 2019-08-19 21:25:01 -04:00
parent fbfa1a0c93
commit 3351f3eb4b
No known key found for this signature in database
GPG Key ID: 317BF0923E3EB7E5
4 changed files with 13 additions and 9 deletions

View File

@ -98,7 +98,9 @@ func getRandomData(ctx unsafe.Pointer, sp int32) {
//export stringVal
func stringVal(ctx unsafe.Pointer, sp int32) {
panic("stringVal")
b := getBridge(ctx)
str := b.loadString(sp + 8)
b.storeValue(sp+24, str)
}
//export valueGet
@ -212,17 +214,20 @@ func valuePrepareString(ctx unsafe.Pointer, sp int32) {
val := b.loadValue(sp + 8)
var str string
if val != nil {
str = val.(string)
str = fmt.Sprint(val)
}
b.storeValue(sp+16, str)
b.setInt64(sp+24, int64(len(str)))
fmt.Println("valuePrepareString", val, str)
fmt.Println("valuePrepareString", val)
}
//export valueLoadString
func valueLoadString(ctx unsafe.Pointer, sp int32) {
panic("valueLoadString")
b := getBridge(ctx)
str := b.loadValue(sp + 8).(string)
sl := b.loadSlice(sp + 16)
copy(sl, str)
}
//export scheduleTimeoutEvent

View File

@ -16,7 +16,7 @@ func main() {
init, done := make(chan bool), make(chan error)
go b.Run(init, done)
<-init
res, err := b.CallFunc("printWasm", &[]interface{}{"success call"})
res, err := b.CallFunc("printWasm", &[]interface{}{"Hello from Go"})
fmt.Println(res, err)
err = <-done
fmt.Println("wasm exited", err)

View File

@ -9,17 +9,16 @@ import (
// TODO: log seems to cause an issue
func printWasm(this js.Value, v []js.Value) interface{} {
fmt.Println("Hello from WASM", v)
return nil
fmt.Println(v[0].String())
return "Hello from WASM"
}
func main() {
ch := make(chan bool)
//fmt.Println("WASM Go Initialized")
fmt.Println("WASM-Go Initialized")
// register functions
fun := js.FuncOf(printWasm)
js.Global().Set("printWasm", fun)
//fmt.Println("Done...")
<-ch
}

Binary file not shown.