20241005projector新feature

背景

20241003kasm idea web workspace

20220615自行编译projector-client

拖了好久都没修这两个问题

打包内置静态资源

分离projector中使用的静态资源地址,改成本地打包解决网络加载js、css的速度问题

支持输入框修改token

edge的PWA正常不会记录query string,让projector支持从url鉴权需要动的东西有点多,所以加个输入框支持手动输入重连即可
坑的是kotlin输出$需要用${‘$’}
client版本v1.8.1.12
server版本v1.8.1.12

TODO 动态生成PWA的manifest

org.jetbrains.projector.server.core.websocket.HttpWsServer.Companion#getResourceName
当前实现的是纯静态的服务器,加载一个kotlin编译成的js文件
入口是projector-client-web/src/main/kotlin/org/jetbrains/projector/client/web/Main.kt
org.jetbrains.projector.client.web.Application#start
入口是启动一个状态机做死循环,初始状态是
private var currentState: ClientState = ClientState.UninitializedPage
第一个队列事件是
projector-client-web/src/main/kotlin/org/jetbrains/projector/client/web/state/ClientAction.kt
org.jetbrains.projector.client.web.state.ClientAction.Start
因此处理过程是
org.jetbrains.projector.client.web.state.ClientState.UninitializedPage#consume
下一个状态是WaitingOpening
想让index.html的内容变成ssr,需要从HttpWsServer开始修改成ssr。或者从更前面做拦截把GET请求内置资源的部分转到独立服务器 ,
官方之前给过electron的客户端,说明分离客户端的网页是可行的,只需要把客户端尝试独立部署即可完成各种自定义开发。且无需修改服务器代码,服务器的内置代码仅作为兜底使用即可
TODO 让projector支持从urlpath鉴权规避PWA的限制

TODO

TODO 待继续研究 考虑实现通用的jcef webview显示转发成canvas方案
TODO 再写一个server,接受所有projector client的上报,提供个网页支持动态从服务器获取完成的url并完成本地的端口转发
0 Comments
Leave a Reply