V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
ety001
V2EX  ›  分享创造

发布了自己的第一个 App -- 网络剪切板

  •  
  •   ety001 ·
    ety001 · 2019-11-04 12:14:05 +08:00 · 5997 次点击
    这是一个创建于 1627 天前的主题,其中的信息可能已经有所发展或是发生改变。

    花了两周时间简单学习了下 Flutter,然后把之前我的网页版网络剪切板做成了 App。

    项目下载地址

    这里是原来的网页版(手机浏览器可以自适应):https://oc.to0l.cn

    这里是 Android App 下载地址:https://fir.im/yhu7

    这里是 iOS App 下载地址:https://apps.apple.com/us/app/%E7%BD%91%E7%BB%9C%E5%89%AA%E5%88%87%E6%9D%BF/id1485974770

    这里是网页版的源码:https://github.com/ety001/online-clipboard

    这里是 App 源码:https://github.com/ety001/oc_flutter

    项目说明

    网络剪切板的网页版已经运行了四年多了,最初是为了解决在某些情况下 PC 端不方便安装 IM 的时候,可以快速从其他 PC 端传入待执行的 CLI 命令。

    最近正好有一些时间,所以就学了下 Flutter 做了个 App。 目前对于 Flutter 代码的一些结构还不是很好的理解,所以代码里有些东西自我感觉写的不是很好。 不过对于初学者来说也能作为一个可以参考的例子吧。

    PS:iOS 版安装后,应用名是 oc_flutter 是因为我忘记修改了,新版本已经提交审核了。这一点我很想吐槽 Flutter 的 CLI 工具居然不能自己去生成对应的配置,这很烦啊。像 cordova 会根据 config.xml 去自动生成 Android 和 iOS 的配置文件,开发者在 config.xml 里配置好,就不用操心别的了。

    第 1 条附言  ·  2019-11-07 00:49:29 +08:00
    增加了 cli 接口,看下示例就懂怎么用了。

    ```
    # 发送
    curl https://oc-server.to0l.cn/public/public -d "content=$(cat /etc/v2ray/config.json)"

    # 接收(只能接收最后一条)
    curl https://oc-server.to0l.cn/public/public > /etc/v2ray/config.json
    ```
    第 2 条附言  ·  2020-03-07 16:02:14 +08:00

    由于 fir.im 域名的问题,安卓下载地址更新为:https://betaqr.com/yhu7

    第 3 条附言  ·  2020-05-12 20:31:36 +08:00
    fir.im 可以绑定自己的域名了,安卓下载地址更新为: http://fir.akawa.ink/onlinecb
    27 条回复    2019-11-26 15:41:25 +08:00
    luogege
        1
    luogege  
       2019-11-04 12:25:18 +08:00
    能选择删除一些就好了
    ety001
        2
    ety001  
    OP
       2019-11-04 12:27:13 +08:00
    @luogege 不要在意这些,50 条后就覆盖了。
    luogege
        3
    luogege  
       2019-11-04 12:32:19 +08:00
    @ety001 主要是,如果我是很长或者很多的文章要审阅复制粘贴修改,就会显得很长很很乱。也就说明你这个还不如用记事本方便
    ety001
        4
    ety001  
    OP
       2019-11-04 12:45:52 +08:00
    @luogege 额。。。我这个不是记事本。。。
    nicoljiang
        5
    nicoljiang  
       2019-11-04 12:51:00 +08:00
    Mac 和 iPhone 不是都原生支持了嘛?
    文本、图片、视频、大文件,都很好。
    ety001
        6
    ety001  
    OP
       2019-11-04 12:59:33 +08:00
    @nicoljiang 如果你有拿着 MacBook Air 去维护一个不允许装 IM 的 Linux 设备的场景的时候,可能就会用到类似我这样的工具了。
    leaves7i
        7
    leaves7i  
       2019-11-04 17:07:36 +08:00
    提个建议,如果能快速选择并复制到剪贴板,对我就够用了
    ety001
        8
    ety001  
    OP
       2019-11-04 17:08:58 +08:00
    @leaves7i 你是指的在网页版,实现点击即复制吗?
    zhigang1992
        9
    zhigang1992  
       2019-11-05 11:43:29 +08:00
    要是能有一个 cli 就好了
    ety001
        10
    ety001  
    OP
       2019-11-05 12:30:54 +08:00
    @zhigang1992 cli 一直想弄,但是没有想好怎么弄比较好。预留一个可以 curl 的接口?
    UserNameisNull
        11
    UserNameisNull  
       2019-11-05 14:53:10 +08:00
    哈哈,巧了,我这有个 CURL 的接口
    https://www.v2ex.com/t/614994
    Mtianmin
        13
    Mtianmin  
       2019-11-06 13:43:38 +08:00
    想要那个网络 U 盘的...
    ety001
        14
    ety001  
    OP
       2019-11-06 15:28:38 +08:00
    Mtianmin
        15
    Mtianmin  
       2019-11-06 21:26:17 +08:00
    @ety001 好的谢谢,php 版本是否需要支持什么扩展,或者特定的环境设置
    ety001
        16
    ety001  
    OP
       2019-11-06 23:40:32 +08:00
    @Mtianmin 没有什么特别的要求,能跑 laravel 就可以了。就是一个非常简单的上传功能。
    cytong1994
        17
    cytong1994  
       2019-11-24 10:08:31 +08:00 via Android
    老哥,自己部署的服务端咋用不了,打开显示的是空白页,服务器后台显示“PHP Notice: Undefined offset: 2 in /source/server.php on line 121”
    ety001
        18
    ety001  
    OP
       2019-11-24 23:42:44 +08:00
    @cytong1994

    使用的 docker 部署的吗?

    如果是按照我库里的 README 操作的话,那么 8000 端口开的是 websocket 服务,不是直接用浏览器访问的。

    静态页面在 fe 分支下,切换到那个分支,npm install,然后修改里面的服务器地址为你自己搭建的 websocket 服务地址,再 npm build 编译即可。

    如果找省劲,可以直接用 gh-pages 分支,修改 app.17dd6270.js 里面的 wss://oc-server.to0l.cn 为你自己的 websocket 地址。
    cytong1994
        19
    cytong1994  
       2019-11-25 19:56:25 +08:00
    @ety001 是用 docker 部署的, 按库里的 README 的话 websocket 服务开的不是 8080 端口吗?还有请问服务端和静态页面在同一台机器上,应该把 app.17dd6270.js 里面的 wss://oc-server.to0l.cn 修改成啥?小白不太懂。。。
    ety001
        20
    ety001  
    OP
       2019-11-25 20:26:03 +08:00
    @cytong1994
    口误口误,默认是 8080,我打错了。

    按照 README 操作的话,操作完,应该会有两个容器在运行,一个是 redis,一个是 php 写的 websocket 服务(开了 8080 端口)。

    然后用户最终访问的其实是 gh-pages 分支下的纯静态页面,在静态页面的 js 里设置你的 websocket 地址。现在代码里默认是 `wss://oc-server.to0l.cn`,你用 `ws://你的服务器 IP:8080` 替换掉 `wss://oc-server.to0l.cn`。
    cytong1994
        21
    cytong1994  
       2019-11-25 20:30:51 +08:00
    @ety001 搞好了,之前用了“ws://服务器 IP:8080”也不行,刚才看了下忘记了浏览器缓存。。。
    cytong1994
        22
    cytong1994  
       2019-11-25 20:33:50 +08:00
    @ety001 为啥用 localhost,127.0.0.1 之类的本地回环打不开啊?
    ety001
        23
    ety001  
    OP
       2019-11-25 21:24:23 +08:00
    @cytong1994 你要是搭建在你自己的电脑上,那用 localhost。你要是搭建在远程服务器,你觉得用 localhost 能访问?
    cytong1994
        24
    cytong1994  
       2019-11-25 22:54:50 +08:00
    @ety001 额,表达有误,我是说静态页面里 js 里设置的“ws://服务器 IP:8080",服务器 ip 换成 localhost。
    ety001
        25
    ety001  
    OP
       2019-11-26 00:56:25 +08:00
    @cytong1994 我说的就是 app.js 里的啊。你的 websocket 服务部署在哪里?你的本地吗? localhost 和 127.0.0.1 是指的你的本地啊。你要是把服务部署在远端,你怎么可能能用 localhost 访问到远端的服务?
    ety001
        26
    ety001  
    OP
       2019-11-26 00:56:48 +08:00
    @cytong1994 请再多学习些网络知识。
    cytong1994
        27
    cytong1994  
       2019-11-26 15:41:25 +08:00
    @ety001 懂了懂了,非常感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1340 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 114ms · UTC 23:40 · PVG 07:40 · LAX 16:40 · JFK 19:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.