您尚未登录。

#1 2019-01-05 12:57:42

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 826

Linux上的脑洞服务器

昨天夜里没事瞎脑洞,想着一个X server跟pulseaudio server合并的服务器。
只给本地用,客户端跟服务端用TCP Unix domain socket连接,然后窗口内容客户端自己渲染到一个memfd里面。连接的时候给服务端送一下这个memfd。窗口事件和声音数据通过连接fd传递,服务端不停的读数据就可以合成桌面并显示或向remote session发送啦。这样窗口内容和声音数据实际上握在客户端手里,不需要依赖服务端就可以产生图像和声音。服务端关了客户端也能返回EIO感知到,可以选择暂停多媒体数据生产,避免无谓的资源消耗。

客户端要关窗口先跟服务端说一声,再传一次这个fd,然后服务端检查到这个fd是服务端已经开过的,会把它那边的fd关掉,然后客户端自己再关掉自己这边那个memfd就行了。服务端还能给客户端用同样的协议发消息,说这个窗口的memfd我强制关闭了,你自己看着办。这样每个memfd的file对应了一个窗口,CS两端都能用,更好的满足了一切皆文件的模型。

最近编辑记录 xtricman (2019-01-05 13:58:33)

离线

#2 2019-01-05 15:01:37

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 5,249
个人网站

Re: Linux上的脑洞服务器

pulseaudio server 不是能走 tcp 的吗?

离线

#3 2019-01-05 15:30:17

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 826

Re: Linux上的脑洞服务器

依云 说:

pulseaudio server 不是能走 tcp 的吗?

不是啊,就是假设客户端都在本地,走本地pipe通信,主要是那个把memfd当窗口的脑洞啦,这样就不需要服务端啦,服务端死了重新连到别的服务端继续显示窗口。

虽然貌似X org客户端DRM绘图也是可以做到这个功能的…

只是个深夜脑洞而已。砍掉X服务器的绘图功能, ip网络只用于传输最后的混成结果和输入事件,不再有单独的一个client进程运行于别的机器上,别的机器只能像VNC一样连过来 ,看见整个桌面。

离线

#4 2019-01-05 15:48:11

依云
a.k.a. 百合仙子
所在地: 一个等待妹纸出现的地方
注册时间: 2011-08-21
帖子: 5,249
个人网站

Re: Linux上的脑洞服务器

类似于 tmux 的 detach?

离线

#5 2019-01-05 16:18:59

xtricman
エクス·トリクマン
注册时间: 2012-12-26
帖子: 826

Re: Linux上的脑洞服务器

依云 说:

类似于 tmux 的 detach?

不太懂tmux拉,没用过这类东西。

离线

页脚