Rodrigo Vargas
Rodrigo Vargas

Reputation: 145

How to send values from javascript to julia using WebIO?

I'm struggling to understand how to use WebIO. From the documentation, this would be an example to send values to javascript:

using WebIO
s = Scope()
obs = Observable(s, "logme", "")
onjs(
    s, "logme",
    js"""
    function(newValue) {
        console.log(newValue);
    }
    """
)

Now, in order to test this, I run it in the REPL followed by

using Mux
WebIO.webio_serve(
    page("/", req -> s)
)

then point my browser (Brave) to localhost:8000 and open the console (via developer tools). At this point, I expect that running obs[] = "hi there" in the REPL would make that message show up in the console. But nothing happens. Why is my understanding of the expected behavior wrong? What should I do to make the javascript console log a message that I write to an observable on the julia side?

Upvotes: 3

Views: 114

Answers (2)

Ranjith Raina
Ranjith Raina

Reputation: 15

Try this It will helps

WebIO.webio_serve( page("/", req -> s) )

Upvotes: 0

Oskar
Oskar

Reputation: 1460

I guess there is an error in the documentation. The problem is that there are no listeners on the observable. I.e., julia> obs returns Observable{String} with 0 listeners. You can add a listener by WebIO.ensure_sync(s, "logme"), or you can write it like this:

using Mux, WebIO, JSExpr
s = Scope()
obs = Observable(s, "logme",  "")
onjs(obs,
     js"""
     function(newValue) {
        console.log(newValue);
     }
     """
     )
webio_serve(page("/", req -> s), 8000)
obs[] = "22"

Then the web console prints out the value 22.

Upvotes: 1

Related Questions