开源,肝爆了! 基于 WebRTC 端到端的桌面共享/文本传输/文字传输已经都达到了可用状态!撒花~

4 天前
 molika

没想到拖了这么久,当初顶的小目标终于实现了! 文件传输/桌面共享 已经都支持了!!!! 撒花~ 撒花~ 撒花~

项目起因是因为要经常传一些文件到 win 服务,下载网盘啥的好麻烦,又要登录又要先下载客户端,也想了解下 webrtc 技术。摸着需求就开始过河了!!

终于这个上个周末把 UI 一些状态 桌面共享 文件传输 ack 都加上了。

项目后端 Go 前端是 react nextjs GO server 只作为信令转发,p2p 建立后传数据文本/共享桌面/文件都不会经过服务器,安全!隐私!

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

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

备注:

本项目和 server 不提供降级服务,p2p 建立失败,则无法传输任何数据。 p2p 的建立成功与否 取决于你的 nat 网络模型。

下面是 AI 提供的 nat 场景 ,大家可以参考:

NAT 类型主要分为以下四种,根据其对外部连接的限制程度不同,影响打洞的成功率:全锥形 NAT ( Full Cone NAT ) 特点:内部主机的 IP 和端口映射到固定的公网 IP 和端口,任何外部主机都可以通过该公网地址访问内部主机。 打洞友好程度:最高,易于穿透。

地址限制锥形 NAT ( Restricted Cone NAT ) 特点:只有内部主机主动向外部主机发送过数据包的外部 IP ,才能通过 NAT 的公网 IP 和端口访问内部主机。 打洞友好程度:较高,但需要先建立通信。

端口限制锥形 NAT ( Port Restricted Cone NAT ) 特点:进一步限制,只有内部主机主动向外部主机的特定 IP 和端口发送过数据包,外部主机才能从相同的 IP 和端口访问内部主机。 打洞友好程度:中等,需要精确的端口匹配。

对称 NAT ( Symmetric NAT ) 特点:每次与不同外部主机通信时,NAT 分配的公网端口都不同,映射关系严格依赖于目标 IP 和端口。 打洞友好程度:最低,穿透难度最大。

7139 次点击
所在节点    分享创造
101 条回复
molika
4 天前
@surbomfla 不支持。
molika
4 天前
@96 感谢佬
molika
4 天前
@rcj6056 v2 有教程。你搜索一下
molika
4 天前
@tavimori 对的。
molika
4 天前
@thomaspaine 不支持
kevin249
4 天前
先 star 后再用
ahjsrhj
4 天前
感谢分享, 很好用
提个意见, 取件码可否屏蔽掉 O 和 0
第一次出现很容易搞混不知道是哪个
SnowHall
4 天前
可以的,就喜欢这样开箱即用的产品,必须 star ,很棒!
InDom
4 天前
东西很棒, 是我一直想要的东西!感谢.

给几个非专业意见, 楼主可以自行判断需求是否合理且可实现.

可以先创建房间, 后选择文件, 比如我通过 https://transfer.52python.cn/#{roomId} 打开, 就默认是这个房间.

或者打开页面就创建一个临时房间, 手机扫码就直接进入房间.

如果两个(或多个)设备都打开了同一个 roomId 则相互显示对方的设备名. 我可以直接拖拽文件到对应的设备后两个设备直接联通发送文件(或文本). 有文件投递给自己时直接弹窗要求保存即可.

页面效果可以参考 https://drop.fydeos.com/ 不过他们是局域网发现, 和楼主实现的功能还不一样.

也许还可以把他们这个局域网自动发现也搞出来(后话).
vfxx
4 天前
很好的产品, 同运营商打洞成功
Raw778
4 天前
局域网传文件,如果中途中断了,就无法重连了。
yufeng0681
4 天前
做成个集群项目,走商业流程呢?
1 、 服务器大家都可以建立, 注册到你定义的网络 [等做大了,可以考虑做有门槛的服务器网络]
2 、作为服务器,提供的是信令服务,建立 P2P 打动成功 [让各种情况下的终端机都能 P2P 连接,包括 IPV6]
3 、服务器辅助建立数据通道成功收取一次费用(比如 2 分钱一次)
4 、终端机做成 SDK 和业务代码(当例子用),让第三方参考开发点对点类的应用:
4.1 、视频通话
4.2 、远程协助
4.3 、私家数字花园
5 、 你就赚管理系统的费用,服务器提供者赚建立数据通道的费用,消费者支付点对点应用的钱,第三方应用开发赚消费者的钱 [这块可以先开发成扣费模式, 给消费者 10 块钱的信用抵扣钱,用于发展真正有需求的用户,有黏性的用户]
kfpenn
4 天前
前端时间也做过 p2p ,用的 libp2p ,网络环境太复杂了,打洞是个问题
deplives
4 天前
佬,是不是太强了
Lemonadeccc
4 天前
做 webrtc 的很少,你很厉害
honkew
4 天前
我也做了一个
https://record.rw2.cc/
zhangk23
3 天前
lizhenda
3 天前
做的很好,试用了下很方便!
peerless
3 天前
谢谢分享
MYDB
3 天前
可惜我是一刀切禁用了浏览器的 udp

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1154676

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX