V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dk7952638
V2EX  ›  问与答

有没有一种技术方案,能将 http 请求自动降级为本地调用,从而实现 web 应用优雅降级为单机应用

  •  
  •   dk7952638 · 2021-01-04 14:19:34 +08:00 · 2017 次点击
    这是一个创建于 1419 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大家好,我来白嫖技术方案和关键字了 问题是这样的,我开发了一个传统的 B 端网站应用,现在想开发一个 C 端客户端应用,首先想到的是浏览器套壳这种方式,但是我想更彻底一些,做单机版,就是数据库用 SQLite,UI 层也不走 http 请求了,想直接本地调用数据,直接渲染,现在突发奇想,有没有一种技术,能把 http 请求降级为本地调用,不走网络请求,做到彻底的单机,有懂得老哥能给个关键词么,谢谢

    14 条回复    2021-01-04 20:21:33 +08:00
    cornetCat
        1
    cornetCat  
       2021-01-04 14:23:58 +08:00   ❤️ 1
    客户端可以在 webview 层面拦截请求,本地处理,应该能达到你要的效果,iOS 可以参考 NSURLProtocol ( wkwebview 可能不适用,仅供参考)
    ysc3839
        2
    ysc3839  
       2021-01-04 14:25:37 +08:00 via Android   ❤️ 1
    其实你用浏览器 Service Worker 拦截请求,数据存到 IndexedDB 里都可以,不需要客户端。

    再者,你做客户端的话,各种 WebView 也都有拦截请求的功能的。
    ztxcccc
        3
    ztxcccc  
       2021-01-04 14:30:27 +08:00   ❤️ 1
    如果是现有程序魔改的话,你可以搞个 proxy 导到本地然后实现一个服务端去处理你的请求
    如果是新开发,你本身就不需要发起 HTTP 请求吧
    TimePPT
        4
    TimePPT  
       2021-01-04 14:33:28 +08:00   ❤️ 1
    Application Cache + LocalStorage ?
    murmur
        5
    murmur  
       2021-01-04 14:51:05 +08:00
    很麻烦,逻辑都要改,刚好做过个需求,一个手机 app 的部分,做了离线支持,巨麻烦,逻辑都得改
    TinyKube
        6
    TinyKube  
       2021-01-04 14:53:16 +08:00 via iPhone   ❤️ 1
    pwa 配置好 Service Work 就行啊
    murmur
        7
    murmur  
       2021-01-04 14:53:20 +08:00   ❤️ 1
    不走 http 请求,总体思路是同步一次数据,提交的时候同步一次数据,这样做不难,现在的数据库都可以暂存,难在所有的逻辑都要在本地进行,也就是说所有需要的数据都得同步下来,否则中间你还得联网,处理数据不一致的问题。
    dk7952638
        8
    dk7952638  
    OP
       2021-01-04 15:08:25 +08:00
    @murmur 其实我到还不考虑数据同步问题,单机之后就不考虑联网了,就纯粹当单机软件用了,同步确实很麻烦
    dk7952638
        9
    dk7952638  
    OP
       2021-01-04 15:25:26 +08:00
    @TinyKube 我去研究下 pwa,这个看来对路
    sujin190
        10
    sujin190  
       2021-01-04 16:00:46 +08:00
    拦截请求不要太简单,这个麻烦是在于你服务端实现的业务逻辑要怎么才能容易的移植到本地 SQLite 上,否则不等于重新写了一遍了
    WenhaoWu
        11
    WenhaoWu  
       2021-01-04 17:32:29 +08:00 via iPhone
    另一个思路,可不可以客户端包一个后端+数据库进去
    baobao1270
        12
    baobao1270  
       2021-01-04 17:33:58 +08:00
    本地起一个 HTTP Server ?
    hoyixi
        13
    hoyixi  
       2021-01-04 17:39:09 +08:00
    早期很多手机 App 都是这么设计的,为了省流量+改进加载速度, 都是请求了之后本地存起来,访问的时候本地无法命中再远程加载~
    不过非常麻烦也不好维护,存储也费劲,比如图片等资源
    zzk1989
        14
    zzk1989  
       2021-01-04 20:21:33 +08:00   ❤️ 1
    本地起 Server 第一次启动防火墙会弹窗询问是否允许访问网络
    可以用自定义协议,比如 app://index.html 来访问
    一些方法可以调用系统安装的 chrome 浏览器,aauto 或者 Lorca
    更轻量的还可以启动一个托盘,直接打开默认浏览器访问
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2722 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:25 · PVG 20:25 · LAX 04:25 · JFK 07:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.