open.spotify.com 是如何工作的?

How does open.spotify.com work?

我可以转到网页 https://open.spotify.com 和 select 歌曲,然后立即在我的桌面 spotify 应用程序上播放这些歌曲。这是如何运作的?我可以想象网页向服务器发送请求然后告诉我的桌面应用程序播放的场景,但网站和我的应用程序似乎太同步了。当然网络速度很快,但歌曲时间计数器完全同步,点击播放时没有延迟。

我想他们可以通过同步歌曲时间计数器来做一些聪明的事情,但我想知道他们是否在做一些更聪明的事情:根本不使用服务器。

所以真正的问题是:有没有办法在网页和客户端上的应用程序 运行 之间进行直接通信?

How does the Spotify web browser button interact with the Spotify app? 中描述了该机制。当您安装 Spotify 的桌面应用程序时,一个名为 SpotifyWebHelper 的进程会在后台运行。该进程作为本地服务器,接收来自open.spotify.com的请求,与当前播放进行交互。如您所见,有一种方法可以将网站和本地应用程序进行通信。

值得注意的是,浏览器供应商越来越关注此机制(请参阅 https://bugs.chromium.org/p/chromium/issues/detail?id=378566),并且它将在未来某个时候停止工作。一个更具前瞻性的解决方案可能基于代理服务,该服务从网页获取请求并更新您的应用程序,反之亦然。 Web 套接字是一个很好的选择。虽然作为状态管理服务的代理引入了一些延迟,但它也允许一些其他用例:例如,您不需要将应用程序安装在浏览网页的同一台机器上,并且可以例如控制移动客户端。