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不限定后端语言和框架,具有极强的项目适配性。