返回开发博客 版本说明 · iPhone 与 iPad

SharkTTY 1.6:一眼看尽每块屏幕

· Safafish

SharkTTY 1.6 在 6 月 27 日发布,同一天还有 Mac 版的 SharkTTY Desk 0.6.0。 从这一版起,远程桌面不再只意味着一块屏幕。不过大部分工作藏在底下:一条 该放弃的时候放弃、该重试的时候重试、并且会告诉你到底是哪一种的连接。

每一块屏幕,而不只是一块

在 1.6 之前,连上一台接了三台显示器的 Mac,你只能拿到其中一块。可以挑是哪一块, 故事到此为止。这让一台多显示器的 Mac 从手机上看起来比它本人小了不少,而你需要的 那部分桌面,总是稳稳地待在你没在看的那块屏幕上。

1.6 把它们全都送过来。拼合视图把这些屏幕排在一起,在其中任何一块上轻点或拖动, 就接管那一块 — 手指落在哪块屏幕上,指针就走到哪块屏幕上。每块屏幕按需流传, 而不是一股脑全推,正因如此,一台三显示器的 Mac 在手机网络下才谈得上可用。

同一版还让你不用退出会话,就能编辑已保存的桌面并取到它的分享链接,于是给第二台设备 配置访问权限,不必先断开连接。

真的能接上的重连

一坐电梯就断的远程桌面算不上远程桌面。1.6 里的连接路径按一个简单的优先次序重写了: 先试点对点直连,因为它更快,而且不牵扯任何第三方;只有在直连没起来的时候,才回退到 中转。点对点优先是一种调度,而不是一个偏好开关 — 应用会让这些路径赛跑,谁先 应答就用谁。

重试是这类事情最容易出错的地方,而且会往两个方向偏。什么都重试,一个错的凭据就变成 看起来像网络故障的死循环。什么都不重试,蜂窝网络两秒钟的打嗝就能结束你的会话。所以 1.6 把两种情况分开处理:认证被拒会立刻中止回退的逐级尝试,因为拿同一把错的钥匙去试 下一条路径,只会以同样的方式失败;而传输层失败则带抖动退避,继续重试。抖动比听起来 要紧得多 — 没有它,同一时刻掉线的每一个客户端,都会在同一时刻回来。

在这之上还有:网络恢复时应用会察觉到并立即恢复,而不是把剩下的退避时间等完; WebSocket 路径加了保活,空闲会话不再被中间设备收割;接受循环也不再丢掉那些在它忙于 处理上一条连接时到达的连接。

短链接,以及什么都不用复制的连接方式

一个配对串是长长的一行文本,里面塞着主机、端口、证书指纹和令牌。扫码没问题,发给别人 就很难受。1.6 为独立中转和托管中转都加了短链接:应用解析链接,拿回一个令牌,然后用它 连接 — 不用肉眼比对指纹,也没有什么需要粘贴。

还有一个相关的小修复,属于本来就不该需要专门说一句的那类:二维码扫描器现在会忽略那些 既不是桌面配对串、也不是短链接的码,而不是拿别人贴在海报上的 Wi-Fi 二维码去凑一个连接。

中转路径上的加密

1.6 里 WebSocket 中转帧是加密的,托管中转也改为签发票据,而不是谁出现在正确的房间里 就放谁进来。两者朝着同一个方向:中转的职责是在两个已经彼此达成一致的端之间转发字节, 它能对这些字节做的事越少越好。如果你根本不想信任任何人的中转,独立中转是开源的, 你可以自己跑一个。

协商而不是猜的版本

应用和 Mac 端代理现在会先交换协议版本和一组能力位,然后才做别的事。这件事不好看, 但在旧应用第一次遇上新代理时就回本了:连接不再是先半通、然后在某个莫名其妙的地方失败, 而是应用清楚地知道对端能做什么,太旧的应用会收到一条明确的更新提示。此后的一切都倚着 这些能力位 — 1.8 里的音频编解码协商用的就是同一套机制。

连接码认证也落在这一版,Mac 一侧还带了限流和允许列表,因此泄漏出去的连接码没法被悄悄 暴力破解。

六种语言,做完了

这一版把界面在全部六种支持的语言里都做完了,而不是做了大部分。终端类应用会攒下大量 短字符串,而最后那两成,正是没出问题时谁也看不见的那些 — 也正是出了问题时, 能用母语读懂一条报错最要紧的时候。

还有那些小的

  • 终端的安全区边距,文字不会再跑到圆角和主页指示条底下。
  • 按主机记住键盘:你上次在这台主机上用的是哪块键盘,回来还是哪块。
  • 远程桌面的 xHD 清晰度上限,留给带宽够、又想要像素的时候。
  • SSH 端口改成直接输入,而不是一下一下点。凡是曾经把它点到 2222 的人都会感谢这一条。

1.6 里的每一项功能都是免费的。唯一的应用内购买是可选的打赏,而且它们不解锁任何东西。

阅读其他语言版本: English · 中文 · 日本語 · Español · Français · 한국어 · Українська

关于应用本身的更多内容见 SharkTTY 使用指南,面向用户的简短更新说明见新功能,最快找到我们的方式是反馈板。返回开发博客