如何使用websockets

Law*_*nce 5 f# fable-f#

如何使用Fable从中消耗数据并将数据推送到websocket?我发现这个github问题表明它可以完成,但找不到任何文档或如何实现这一目的的示例.

rmu*_*unn 7

对于后来通过Google发现此问题的任何人,这是@Lawrence在Gitter上提出这个问题时从Maxime Mangel收到的回复:

你好@lawrencetaylor你可以在这里找到一个使用带有FableArch的websockets的旧样本.不要认为代码100%正确,因为它来自旧版本的fable-arch.

但是,此代码应该向您展示如何使用带有fable-arch逻辑的websockets. https://github.com/fable-compiler/fable-arch/commit/abe432881c701d2df65e864476bfa12cf7cf9343

首先,在这里创建websocket .

在这里,您可以看到如何通过websocket发送消息.

这里怎么听上的WebSocket.

我复制了他下面提到的代码,以便之后发现此问题的任何人都可以阅读它而无需关注这些链接.以下代码的信用是Maxime Mangel,而不是我.

Websocket创建

let webSocket =
    WebSocket.Create("wss://echo.websocket.org")
Run Code Online (Sandbox Code Playgroud)

通过websocket发送消息

webSocket.send("Hello, socket!")
Run Code Online (Sandbox Code Playgroud)

听一个websocket

let webSocketProducer push =
  webSocket.addEventListener_message(
    Func<_,_>(fun e ->
      push(ReceivedEcho (unbox e.data))
      null
  )
)

createApp Model.initial view update
|> withProducer webSocketProducer
|> start renderer
Run Code Online (Sandbox Code Playgroud)

注意:ReceivedEcho在上面的代码中是Action区别联合的案例之一,这是fable-arch处理方式中的标准模式.并且withProducer是寓言拱的功能.有关如何使用的简单示例,请参见http://fable.io/fable-arch/samples/clock/index.htmlwithProducer.