如何使用 WebIO 将值从 javascript 发送到 julia?

How to send values from javascript to julia using WebIO?

我很难理解如何使用 WebIO。从文档中,这将是一个将值发送到 javascript:

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

现在,为了对此进行测试,我在 REPL 中 运行 它,然后是

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

然后将我的浏览器 (Brave) 指向 localhost:8000 并打开控制台(通过开发者工具)。此时,我希望 REPL 中的 运行ning obs[] = "hi there" 会使该消息显示在控制台中。但是没有任何反应。为什么我对预期行为的理解是错误的?我应该怎么做才能使 javascript 控制台记录一条我写入 julia 端可观察对象的消息?

我想文档中有错误。问题是可观察对象上没有听众。即,julia> obs returns Observable{String} with 0 listeners. 可以通过WebIO.ensure_sync(s, "logme")添加监听器,也可以这样写:

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"

然后 Web 控制台打印出值 22。

试试这个 会有帮助

WebIO.webio_serve( 页面(“/”,请求 - > s) )