按照需求,本来实现 WebSocket 的目的是收发 Banshee 的消息(主要是收)

后面突然灵光一闪:上个 WebRTC 怎么样?于是开始一段「为了醋包饺子」的心路历程:

  1. 虽说原本是为了本地调试,但这套技术很明显内网都能用
  2. 如果有一个「授权」对话,那么就可以在内部进行「远程问诊」
  3. 测试或者验收遇到什么问题,望闻问切的第一步是
  4. Remote Display / Remote Desktop

TL;DR

  • 调整 WebSocket 支持的实现
  • 实现信令服务器部分
  • 因为流量都在内网,所以不需要转发(STUN)

其实开发一个程序思路一直都是一致的,并不会因为是前端就会差/简单多少。再加上之前因为有「多端」这个「产品概念」之后,所以程序上一直在解决一个问题:如何将 Web 之外的逻辑固定下来?于是有了 Banshee,下次细说

既然有一个框架了,并且也选择使用跟 Angular 类似的 root 级 DI 这种路线之后,开始有一个想法:

流向很清晰,这个时候有一个测试监控一体机是不是实现方便作用不小?

于是有了 Banshee Cockpit,但它也跟 Banshee 一样,下次细说

又到了技术选型环节:早在三年前就尝试的 electron 方案 electron-react-koa-template(已归档),当时是为了直接在树莓派运行智能闹钟程序时顺便提供 API 以远程操控,所以让 electron 附带的 node 跑起来一个 koa

でも、选型依然是我目前的经典搭配:Tauri + Solid。那首先要解决的有两个问题:

  1. 还是一样,需要跑一个 server
  2. 因为需要收发 Banshee 的信息,所以需要 WebSocket

TL;DR

  • 你可以直接用 Rust 提供的基础库,但我用 axum
  • 集成起来很方便,麻烦的是 Rust
  • 摆烂了,Rust对于内存的执着有种让人想一拳打爆屏幕的冲动

这篇文章极其具有时效性,在目前,flutter 不支持多窗口,但是已经有这么一篇文档[1]。而且 flutter desktop 的多窗口可能已经计划中了。

SETSUNA 的 UI 需要满足条件:桌面移动端统一 UI(没错过了半年还在选型)。现阶段可以选择的只有一个框架:flutter。而且:

  • flutter 使用 skia 绘图而不是调用原生组件,表现统一
  • flutter 可以方便的响应式设计,UI 可以用同一套代码(只要可以,顺路兼容手机、折叠屏、横向平板、桌面布局)

flutter 本就是先给移动端设计,可以直接用 dart 完成很多工作。但是在调研桌面时发现一个问题:找不到多窗口 API! 这不行。虽然 flutter 是允许原生编程,那我能会 windows 开发吗?!

等会,flutter 是不是已经支持了 web。那么,这波不得两面包夹芝士?

flutter-tauri

把 flutter 套进 electron 是不是就完成需求了!(顺便还可以实现简单 PWA 版本)

但是桌面端不选择 electron,咱用 tauri!毕竟现在全平台都 webkit(blink),而且 flutter 使用 canvaskit,不需要担心表现…


0%