Hasty Briefsbeta

双语

Clojure: Realtime collaborative web apps without ClojureScript

a year ago
  • #Web Development
  • #Clojure
  • #Real-time
  • 一个多人网页应用在没有使用ClojureScript或用户编写JavaScript的情况下,通过Datastar超媒体框架实现。
  • 该应用每200毫秒通过SSE(服务器发送事件)将整个<main>元素从服务器流式传输到客户端。
  • 尽管实现方式简单(例如1600个单元格的网格每个都带有独立点击监听器),但由于Datastar高效的内容差异算法,仍能保持性能。
  • 通过SSE上的Brotli压缩实现网络传输高效性,压缩比高达100-230:1。
  • 选择SSE而非WebSocket是因其操作简单、压缩效果更好且自带HTTP功能支持。
  • Datastar支持类似React的视图=函数(状态)模型,但将状态函数保留在服务端。
  • 示例代码展示了如何使用Hyperlith(基于Datastar的迷你框架)处理SSE、压缩等功能。
  • 该应用原生支持多人协作功能,无需额外修改代码。
  • Datastar不限定后端语言和框架,具有极强的项目适配性。