• 请不要在回答技术问题时复制粘贴 AI 生成的内容
molika
V2EX  ›  程序员

开源一个自己写的基于 WebRTC 传输的在线站。

  •  
  •   molika · Aug 5, 2025 · 4844 views
    This topic created in 455 days ago, the information mentioned may be changed or developed.

    前几天一直在线传文件,后面就想着自己弄一个。 WebRTC 也更加放心。 这次直接体验了一把 nextjs + go 。 构建出来的文件直接单文件部署即可,前端资源也一并在二进制包。非常 nice 。 -port z 指定端口

    目前已经实现了 文件传输。 桌面共享 开发中。

    开源地址 https://github.com/MatrixSeven/file-transfer-go

    体验地址 https://transfer.52python.cn/

    佬们可以 star 或者拍代码(大部分 AI ) 哈哈哈

    Supplement 1  ·  Aug 5, 2025
    ws 是为了交换 ICE 打洞数据,然后传输走 webrtc 点到点直接传输, 你传输的数据不会经过我的服务器,是你的两个设备直连。不过有些地方 nat 网络比较严格 可能会打洞简历点到点链接失败,这样就没法传输了。

    数据不会经过服务器 不吃我的带宽,所以大家随便搞哈哈哈
    代码开源,不放心可也审查。
    51 replies  •  2025-08-07 14:17:37 +08:00
    molika
    molika
    OP
    Aug 5, 2025
    1
    文字和桌面还是适配。目前只能文件
    hellodigua
    hellodigua
    Aug 5, 2025
    2
    有点牛,请问下文件不经过中转服务器,是点对点传输吗?
    hellodigua
    hellodigua
    Aug 5, 2025
    3
    你这个整一个正式的域名,我甚至愿意保存长期使用
    szabc
    szabc
    Aug 5, 2025
    4
    支持
    molika
    molika
    OP
    Aug 5, 2025
    5
    @hellodigua 是的 数据不经过我的服务器,通过打洞然后点到点直传,不然你传个文件 我带宽都爆掉了哈哈哈。
    molika
    molika
    OP
    Aug 5, 2025
    6
    @hellodigua 不出意外 会一致挂着。 就这个域名。
    molika
    molika
    OP
    Aug 5, 2025
    7
    @yiroonli 感谢大佬 打破 0 回复了
    andyskaura
    andyskaura
    Aug 5, 2025
    8
    我有做一个类似的,不感觉方向都走错了,没你这个直观。explorer.kuraa.cc
    molika
    molika
    OP
    Aug 5, 2025
    9
    @andyskaura 侧重点不一样,我这个就是传文件。用啥传啥就完事了
    Smilencer
    Smilencer
    Aug 5, 2025
    10
    https://boardrop.app/
    局域网互传也是走的 WebRTC
    WebRTC 走不通,临时互传个文字图片也可以
    TimPeake
    TimPeake
    Aug 5, 2025
    11
    界面看着有点 tailwindcss 风
    cat
    cat
    Aug 5, 2025
    12
    试了一下,没打通
    skiy
    skiy
    Aug 5, 2025
    13
    我现在用 croc 命令行传。。。
    wKong753900
    wKong753900
    Aug 5, 2025
    14
    哈哈,我去年也有这么个想法,写开源项目写到一半就没继续了
    sujin190
    sujin190
    Aug 5, 2025
    15
    不搞个生成二维码
    blankmiss
    blankmiss
    Aug 5, 2025
    16
    打不通一点
    realpg
    realpg
    Aug 5, 2025
    17
    神仙应用 star 了 打算忙完自己搭建一个

    可不可以 feature request?

    后端加个配置项
    allowTextRelay: false,
    allowPictureRelay: false,
    pictureRelaySizeLimit: 102400,

    然后前端对应实现一下
    molika
    molika
    OP
    Aug 5, 2025
    18
    @blankmiss 和 NAT 网络有关系, 我这里没有搭建中续服务器,所以打洞失败会直接失败,而不是降级使用中续。因为我最初就认为用这个 p2p 其实是为了不过服务器。
    molika
    molika
    OP
    Aug 5, 2025
    19
    @blankmiss 和 NAT 网络有关系, 我这里没有搭建中续服务器,所以打洞失败会直接失败,而不是降级使用中续。因为我最初就认为用这个 p2p 其实是为了不过服务器。!!!
    molika
    molika
    OP
    Aug 5, 2025
    20
    @cat 和 NAT 网络有关系, 我这里没有搭建中续服务器,所以打洞失败会直接失败,而不是降级使用中续。因为我最初就认为用这个 p2p 其实是为了不过服务器。
    molika
    molika
    OP
    Aug 5, 2025
    21
    @sujin190 加入 TODO 有时间推上去。我自己也有用,也算是自己的需求了哈
    molika
    molika
    OP
    Aug 5, 2025
    22
    @wKong753900 一无所知,到现在 其实很快,了解原理 就可以 pua ai 启动了
    molika
    molika
    OP
    Aug 5, 2025
    23
    @realpg 完全可以。
    ShundL
    ShundL
    Aug 5, 2025
    24
    已 star
    crime1024
    crime1024
    Aug 5, 2025
    25
    这种写法是不是有个问题,毕竟返回的是指针,那么锁只在函数体内有效,正确的用法不应该返回数据的副本吗?
    undefinedsymbol
    undefinedsymbol
    Aug 5, 2025
    26
    界面不错,不过试了一下,失败了,这类应用感觉如果想做好,最终还是需要走服务器,不过走服务器又会涉及到隐私问题了。。。
    itechify
    itechify
    Aug 5, 2025
    27
    来个 docker 镜像及 compose 模板
    baichi
    baichi
    Aug 5, 2025
    28
    域名 52python 然后项目一行 python 都没有 😑
    caocong
    caocong
    Aug 5, 2025
    29
    我自己练手也写了类似的小工具使用 webrtc 同步文本、传输文件、共享屏幕,op 这个界面和我用 ai 生成的风格好相似,我个人目标是尽量避免搭建信令服务器做成纯前端的东西,如果是纯局域网内可以实现,跨网够呛,而且 stun 服务器使用公用公开的服务器的能力很有限,不如自己搭的
    molika
    molika
    OP
    Aug 5, 2025
    30
    @sujin190 已支持
    Tink
    Tink
    Aug 5, 2025
    31
    我这几天也糊了一个,能用

    https://f.110x.de/
    tengyoubiao
    tengyoubiao
    Aug 5, 2025
    32
    界面写的很好,我学习 webrtc 之后发现信令服务器、打洞和中继都需要单独做服务,从实用的角度看还是用网盘方便
    kuxiaobai
    kuxiaobai
    Aug 5, 2025
    33
    试用了一下,接收文件不成功,有可能是我把浏览器的 webrtc 功能给关闭了
    le4tim
    le4tim
    Aug 6, 2025 via Android
    34
    请问啊,webrtc 打洞,有一端如果是对称型的,webrtc 能实施生日悖论的端口碰转吗?就是用变换源端口去发几百个 udp 包?或者变换目的端口发几百个包
    lidedongsn
    lidedongsn
    Aug 6, 2025
    35
    webrtc tcp 模式
    abolast
    abolast
    Aug 6, 2025
    36
    @Tink 我倒是对你糊的这个感兴趣,简洁。啥时候开源一下看看代码哈哈哈哈哈
    Satansickle
    Satansickle
    Aug 6, 2025
    37
    WebRTC 传输的必须条件是什么?试了好几个网络都失败
    Tink
    Tink
    Aug 6, 2025❤️1
    38
    @abolast #36 已经开源过了,但是代码很烂,自己写的就不行,再加上 llm 一顿输出,凑活看吧。我这个比较特殊的一点是支持通过 cli 进行文件传输,cli 下只能走中转,因为 cli 下的 webrtc 很难搞。

    https://github.com/goxofy/P2P-File-Transfer-WebRTC
    abolast
    abolast
    Aug 6, 2025
    39
    @Tink 发现了你的 Web Clipper ,这个好用
    Tink
    Tink
    Aug 6, 2025
    40
    @abolast #39 欢迎使用
    testliyu
    testliyu
    Aug 6, 2025
    41
    跨网络之间就没办法使用了
    snow0
    snow0
    Aug 6, 2025
    42
    学习了下。对于手机的 4G/5G 移动数据上网(几乎 100%是对称型 NAT ),不提供 TURN 中转服务的话几乎 100%会失败,对吗
    molika
    molika
    OP
    Aug 6, 2025
    43
    @snow0 嗯嗯,依赖 nat 类型,但是我手机和电脑互传是没啥问题的。可能看地区。 ,不提供 TURN 中转服务,因为初心就是不过服务器。
    molika
    molika
    OP
    Aug 6, 2025
    44
    @testliyu 跨网络依赖于你所在网络的 NAT 模型。 对称型 NAT 基本没希望了。
    molika
    molika
    OP
    Aug 6, 2025
    45
    @Tink cli 下支持 这个厉害了
    molika
    molika
    OP
    Aug 6, 2025
    46
    @Satansickle nat 模型
    完全锥形 NAT ( Full Cone NAT ):所有外部请求都可以直接映射到内网设备,穿越最简单。
    地址限制锥形 NAT ( Address-Restricted Cone NAT ):只允许来自已知 IP 的外部请求。
    端口限制锥形 NAT ( Port-Restricted Cone NAT ):只允许来自已知 IP 和端口的请求。
    对称 NAT ( Symmetric NAT ):为每个目标分配不同端口,点对点连接困难,需依赖 TURN 。

    对称 NAT 没法打洞~
    molika
    molika
    OP
    Aug 6, 2025
    47
    Wxh16144
    Wxh16144
    Aug 6, 2025
    48
    UI 不错,之前接触到一个「程序员小山与 Bug 」博主也写了一个类似的 https://github.com/sunzsh/internal-chat
    keven1024
    keven1024
    Aug 6, 2025
    49
    我也晒晒我的开源项目 015 ,golang+vue(nuxt3),和 op 的功能差不多,但是 op 的传输方案是用 webrtc ,我这边用的是服务器存储.

    我的项目相比 op 的优势在于我这个支持分片上传和秒传,对有大文件上传需求的用户更友好

    https://github.com/keven1024/015


    第二个优势是项目可扩展,目前基建差不多了,包括队列系统什么的,支持在原有文件上传基础上扩展新功能,现在加了一个图片压缩,未来会陆续加一些图片超分辨率,图片去背景等这种一次性场景的功能

    molika
    molika
    OP
    Aug 7, 2025
    50
    @keven1024 就是为了不过服务器 所以才用 p2p 需求一样。 但是可能大部分不在乎这些。
    molika
    molika
    OP
    Aug 7, 2025
    51
    @Wxh16144 不错
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4283 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 100ms · UTC 01:09 · PVG 09:09 · LAX 17:09 · JFK 20:09
    ♥ Do have faith in what you're doing.