f# - 在 F# 中流式传输服务器发送的事件 (SSE)
问题描述
使用 System.Net.Http 库将“服务器发送事件 (SSE) 样式”事件流式传输到 F# 前端的轻量级方法是什么?我了解事件流格式(例如此 PHP 示例代码),但我正在寻求一些指导以在服务器端 F# 应用程序中实现流部分(我在 .Net Framework 4.8 上)。
解决方案
你可以使用Suave。下面的示例每秒发送一条消息(使用 SSE)我没有在 .net 47 中尝试过(我在 Mac 中的 .net 5 中尝试过),但它应该可以工作。
open Suave
open Suave.Sockets
open Suave.Sockets.Control
open Suave.EventSource
open Suave.Operators
open Suave.Filters
let write i out =
socket {
let msg = { id = string i; data = string i; ``type`` = None }
do! msg |> send out
return! SocketOp.ofAsync (Async.Sleep 1000)
}
let app =
choose [
GET >=> request (fun _ ->
handShake (fun out ->
socket {
let actions =
Seq.initInfinite (fun n -> n + 1)
|> Seq.map (fun i -> write i out)
for a in actions do
do! a
return out
}))
[<EntryPoint>]
let main _ =
startWebServer defaultConfig app
0
推荐阅读
- android - 如何从 android studio 中的 web 服务中提取的坐标在谷歌地图上显示多边形
- c# - 先制作 Asp.Net 核心路由,然后再制作到 React 路由
- oracle - 选择部门组
- angularjs - 前端的多个 onclick 事件使用 angularjs 进入 web api
- curl - curl :在命令行中工作,但不在 makefile 中
- php - 在 WooCommerce 订单和电子邮件通知中显示自定义字段值
- jmeter - 在 JMeter 的 SMTP 采样器中获取错误 500
- swift - 使用未解决的标识符“DefaultConflictHandlers”
- javascript - 更改电子邮件后重新验证用户 Firebase React
- spring-boot - 使用 Spring Security 进行摘要身份验证:按预期收到 401,但带有两个 WWW-Authenticate 标头