撸一个基于浏览器的 P2P 应用,代替百度云盘传文件,顺便补网页微信不能用的缺 - V2EX
2019-12-02 17:45:22 Author: www.v2ex.com(查看原文) 阅读量:219 收藏

之前用百度云盘基本为了远程传文件,可惜现在不付费基本就是摆设了,挺喜欢网页微信的,在任何电脑上都可以方便的和自己手机连接,可惜挂了。

看 webrtc 挺好玩的,就撸了个网站,帮各个设备建立直连通道,方便文件分享和文字内容相互 copy。

现在只在 android 和 window 中使用着,苹果那一套据说 webrtc 支持不是很好,还没有测试和做兼容性。

www.pplink.link

1

en20   1 天前 via iPhone

试了一下做的很好,有开源吗

2

bshu   1 天前 via Android

@en20 你用 iphone 访问的?可以用吗? apple 那套我还一点没有测试过呢

4

whwq2012   1 天前 via Android

qq 局域网传输不好吗?不也是全平台

5

bshu   1 天前 via Android

前端基于 simple-peer 和 quasar,后端 expressjs,因为开始是基于兴趣,所以是在原有的商业项目的基础上构建出来的,要开源估计先要擦屁股,很大一部分代码要重写的,否则哪敢放出来

7

bshu   1 天前 via Android

@whwq2012 qq 已经 n 年不在用了,麻烦,基本是用微信和网页微信,任何电脑都比较方便,可惜微信网页不让用了,强制推客户端。局域网和广域网都可以用。

8

bshu   1 天前 via Android

@en20 哈哈,看来 ios 对 webrtc 的支持越来越好,多谢,多谢

9

whwq2012   1 天前

@bshu #7 qq 可以 pc,ipad,手机端三端登录,而微信最多手机+ipad/pc。这不比微信方便?除非你平时不同时用 pc 端和 ipad 端。。

10

bshu   1 天前 via Android

@whwq2012 没用 ipad,现在手机屏挺大的,用 pad 不知用来干嘛

13

oreoiot   23 小时 14 分钟前 via iPhone

直接网页调用摄像头扫码好评。

14

bshu   23 小时 9 分钟前 via Android

@oreoiot 被逼的,国内 android 的浏览器对 webrtc 或 blob 支持的不好,chrome 和 firefox 最完善,但是人家没有扫码功能,所以只能自己在网页里实现了

15

xiangyuecn   22 小时 7 分钟前   ♥ 1

首页标题可以改一下,收藏起来真费力,睡一觉起啦估计就不知道这个链接啥玩意了😂😂 比如:

old: pplink
new: pplink - 大文件传送、电脑 /手机互连

17

feixia5712   21 小时 39 分钟前 via Android

挺好用的,我们上传的文件会在服务器记录吗?

18

feixia5712   21 小时 22 分钟前 via Android

希望大佬能开源,造福人类

19

bshu   21 小时 11 分钟前 via Android

@feixia5712 两端是穿透后直连,服务器只是帮着建立连接,转发一下连接命令,数据不走服务器。但是如果两侧确实无法穿透,数据是分片后通过不同的 relay 中继转发过去的,中继那里也是网络底层透传,中间无解析无缓存无记录。以后希望把中继也部署在用户端,类似 P2P,多点转发,但每个都只是少量几个随机数据块

20

feixia5712   20 小时 6 分钟前 via Android

@bshu 谢谢大佬,学习了,最后能开源出来就好了,公司内部使用,或者其他用,就更好了

21

AoTmmy   19 小时 55 分钟前 via Android

不错不错,好东西收藏了,等大佬一个 github🌸

23

bshu   18 小时 39 分钟前 via Android

@mineV 额..,github 上用 webrtc 实现数据传送的项目有些确实不错,开始做的时候也研究过,比如 FilePizza,大家感兴趣可以搜来玩玩。不过,你发的这个之前确实没怎么留意,因为是用于实时视频和音频的项目。因为做这个开始主要就是为了方便远程传文件,所以音视频的应用没考虑,实现应该更容易,只是用来干嘛呢?没想明白

24

GPLer   16 小时 48 分钟前 via Android

error:1010 怎么破。

26

bshu   16 小时 26 分钟前 via Android

@GPLer 正常情况下这个错误不应该产生,表示建立连接的消息缺少对端地址,可能哪里 bug 了吧,麻烦刷新一下页面,重新尝试一下

27

HarveyJ   15 小时 45 分钟前

试了下感觉挺不错的,有点意思,支持一下

29

anyele   13 小时 49 分钟前 via Android

就缺可以分享文字的

30

nkcfc   9 小时 27 分钟前 via Android

@whwq2012,并不是全平台,linux 下 QQ 几乎没法用。

32

mengkun   8 小时 49 分钟前

不错。还可以即时聊天,比 https://file.pizza 好用!收藏了~

33

bshu   8 小时 48 分钟前 via Android

需要服务器帮助建立双方连接

34

Hyseen   8 小时 33 分钟前

用 macOS 和 iPhone 简单测了一下,没发现什么问题,收藏了

35

JunoNin   8 小时 24 分钟前   ♥ 1

设置我的名字是不可以自定义的吗

36

bshu   8 小时 21 分钟前 via Android

@Hyseen 请问一下,是用自带的 safari 测试的,还是 chrome ?多谢!

37

Hyseen   8 小时 18 分钟前   ♥ 1

@bshu #36 Safari 和 Chrome 都试了

38

wei193   8 小时 14 分钟前

当年毕业设计就是这个玩意!一直想重新上线,看着毕业设计的代码觉得太垃圾就放弃了。

39

bshu   8 小时 10 分钟前 via Android

@JunoNin 可以设置自己的名字,在你的设备下方更改就可以了。刚刚试了一下发现改不了,应该是有 bug,稍后我会吃掉它。名称是保存在本地浏览器的,设置一次以后再使用都有效,名字不会上传服务器,话说所有数据都不会经过服务器,服务器只负责双方建立连接的信令管理

41

bshu   8 小时 3 分钟前 via Android

@Hyseen 哇,多谢!意外之喜,因为之前 safari 一点没有测试,ui 兼容性都没有做,看来问题不大。前端首次用 quasar ui 框架,很不错,赞一个。做前端的兄弟可以尝试一下

42

steveway   7 小时 52 分钟前

好东西
愿意开源就更好了
支持~

45

fhvch   7 小时 35 分钟前

有点意思!

46

dixeran   7 小时 30 分钟前 via Android

NAT 严格点是不是就不能用了,比如 4G 网络这种

47

bshu   7 小时 25 分钟前 via Android

@qyvlik 这个也用过,是个好东东,我如果有钱也把这个功能整进去,除了可以同步直传还可以异步传,一个安全,一个方便,随便选

49

bshu   7 小时 17 分钟前 via Android

@dixeran 可以用,实在无法穿透的,采用了分片多中继透明转发,具体见上方回复。估计这种用户多了,现在部署的中继带宽不够。初步两种方案,一个是把中继集成到合适的用户端,一个寻求国内便宜带宽服务商,多中继随机分片转发,对网络稳定性要求没那么高。还在权衡中。

53

bshu   6 小时 47 分钟前

@dreamweaver 嘿嘿,被你抓包了,我一个理工男,既没有审美,也没设计能力。在 iconfont 中找啊找啊,就看到他了,然后就拎过来了。除了被我老婆抓包,你是第二个。

54

imdong   6 小时 40 分钟前   ♥ 1

建议添加自定义 path,不然两台电脑,可能不太方便输入。

比如:自定义别名 + 密码

55

Zeonjl   6 小时 30 分钟前 via iPhone

收藏🙏

56

FakeLeung   6 小时 21 分钟前

传了个视频。
本地能打开,发给对方打不开。

57

bshu   6 小时 20 分钟前

@imdong 这个之前确实考虑过,当时觉得自定义的话需要配合一大推的安全机制才能更好保护用户不被恶意用户骚扰。而且也实现了连接前需要对方手动确认的功能,只是没有开放,主要考虑就是怕用户麻烦,还有就是远程连接时的方便性。比如我在家里的电脑打开网站,记下网址,然后我在公司或其他任何地方和设备都可以直接接入。现在的机制是只有关闭网站那么下次进来就是一个随机的新地址,可以防止恶意用户接入。如何是自定义的话,基本就是半永久,被探测到的风险还是较高的,加上密码的话确实可以一定程度上增加安全性。好,这个功能我记下了,稍后帮你加上去。当然也是本地浏览器验证奥,服务器不参与任何数据和业务逻辑。

58

bshu   6 小时 15 分钟前

@FakeLeung 数据是分片加密传输的,传输后会校验和重组,如何校验失败并且尝试自我修复仍然无法解决,那么会出现这个提示。一直在完善和修复这个机制中。方便的话请重新连接,然后传输一下这个视频试试。另外,请问你用的是什么系统和浏览器,多谢!!

59

FakeLeung   6 小时 14 分钟前

@bshu #58
我:macOS14.15 ,chrome 78.
对方不清楚:估计是 Windows10,chrome78

60

dcalsky   6 小时 10 分钟前 via Android

有同学用 iphone 在微信或者 qq 里打开测试过吗?我想问问兼容性

61

bshu   6 小时 1 分钟前

@FakeLeung 好的,多谢。因为服务器不参与连接传输,所以也不清楚具体什么原因。只能说如何对方没有中止的情况下(对方显示 100%可能还没有传输完奥,因为文件大的时候百分比计算是不准确的),确实偶尔碰到出错的情况,原因包括当时网络、校验等。我会继续排查代码,完善大文件传输的机制。

62

bshu   5 小时 59 分钟前

@dcalsky 真是好心人,iphone 中微信和 qq 我也想知道呢。不过 android 上的微信,可以发文件和文字内容相互传送,但是下载不行,估计 iphone 也差不多。qq 吗?没有测

64

bshu   5 小时 14 分钟前

@xiangyuecn 网站名称已经按你的建议完善,谢谢你!

@JunoNin 自定义名字 bug 也已经修复,谢谢你! 修改名字后本地立即生效,之后所有的新连接将看到你的新名字;对于之前已经建立的连接,相互同步彼此信息时也会即时生效。

66

v3xe   4 小时 26 分钟前

微信已经屏蔽了哇~

67

kakudesu   4 小时 7 分钟前

我一般是用 xender,爱莫助手

68

bshu   3 小时 55 分钟前

@v3xe 屏蔽?啥意思?我这里可以访问啊。微信之屏蔽了下载功能啊

69

jsq2627   3 小时 50 分钟前

如何知道自己传输的文件是经过 relay 还是 p2p 呢?

70

bshu   3 小时 42 分钟前

@kakudesu 额..., 我满怀希望打开他们的 web 版,结果让我装 app,我只能:你好,再见

71

bshu   3 小时 40 分钟前

@jsq2627 如何用电脑的话,把鼠标放到连接成功的小标志上,会有提示;如果在手机上,只能根据连接成功后的图标区分了

72

kakudesu   3 小时 34 分钟前

@bshu #70 是的,就麻烦在装 app 上,好在手机客户端都有

73

honjow   3 小时 31 分钟前

厉害。很方便

74

jsq2627   3 小时 31 分钟前

@bshu #71 电脑连了手机,电脑显示 P2P,手机显示 Relay,难道可以不一致?

75

bshu   3 小时 21 分钟前

@jsq2627 刷新一下试试,先刷新最开始打开的那个,再刷新另一个去重新连接。做的时候已经统一考虑两边的连接情况了,不应该出现这种情况。如果出现显示不一致,可能就是 bug

76

hkyyx   3 小时 7 分钟前

PC 端:win7 Chrome V71.0.3578 手机端:安卓 8.0 X 浏览器 V2.9.0 (点击下载后进度条能跑完,但是下载管理器没有任何东西) 神奇浏览器 V0.8.7 (点击下载后能弹出下载框,但显示正在解析文件且下载速度为 0,目前以过去 5 分钟了,任然这样,测试文件:一张 450KB 的 jpg 图片,一个 12KB 的 docx 文件,一个 27KB 的 xlsx 文件)

78

bshu   3 小时 1 分钟前

@hkyyx 在 pplink 帮助里已经针对此问题有相应的提示,国内产的 android 手机浏览器在下载时,可以正常传输,但是保存文件时浏览器不支持页面里的内容下载,只是把粗暴的链接丢给了一个负责下载的子应用,所以导致无法正常保存,这个研究了半天还没有很好的解决方案。手机版的 chrome 和 firefox 不存在此问题,能正常使用。

79

differentPlayer   3 小时 0 分钟前   ♥ 1

好像同处一个 wifi 下就一直显示 xxx 正在链接,后来把手机切到 4G 之后,就提示 error 1010

80

bshu   2 小时 58 分钟前

@differentPlayer 支持多个 tab 的使用,如果是互连测试,请刷新那个访问复制了的链接的页面,应该可以正常连接,这个问题好像只出现在同一个浏览器下第一次访问时。如果还不行那请确认一下 你的 chrome 版本了

81

jackrebel   2 小时 55 分钟前

@bshu iphone 用得很爽。ios13, 至少。 我已经用起来了。666。。。。

82

bshu   2 小时 51 分钟前

@differentPlayer 先感谢一下,刷新一下页面试一下吧,如果还是不行,估计被你踩了一个大 bug。1010 这个问题我之前以为偶然出现,现在看来应该是这个 bug 导致的你连不上,今天我会修复掉。修复后通知你。谢谢你!!

83

differentPlayer   2 小时 49 分钟前

Google Chrome 已是最新版本
版本 78.0.3904.108 (正式版本) ( 64 位)

刷新网页一直是这 2 个 tips

正在连接 36423ab0-14ce-11ea-afbb-95dced5392d1 ...
a578e1d0-14cf-11ea-afbb-95dced5392d1 开始连接你...

84

jackrebel   2 小时 44 分钟前

@bshu 建议换个微信能认的域名后缀, 不要用 link 这种了, 多一层微信的警告框。

85

bshu   2 小时 43 分钟前

@differentPlayer 哈哈,大哥,你这个是第一次碰到。请确认一下,一个地址是 www.pplink.link,没有后缀参数,刷新后,在这个页面里复制“我的网址”,然后在另一个 tab 中打开刚复制的链接,可以刷新几次。我想不通为什么会出现两个提示,一个是连接,一个是被连接,除非你刚刚打开连接一个对端,另一个对端也在连接你,哪有这么巧奥。

86

bshu   2 小时 36 分钟前

@jackrebel OK,我会再测试一下,微信是不是有后缀导致的警告。另外不建议在微信里使用,微信里无法下载。建议用 chrome、firefox、safari,原生 chrome 没有二维码扫描,但是在 pplink 的首页的右上侧有二维码扫描功能,可以直接扫描连接电脑的。

87

bshu   2 小时 24 分钟前

@differentPlayer 能连上吗?要不我开个连接,你连我 : https://www.pplink.link/?r=9a141930-14c6-11ea-afbb-95dced5392d1

88

differentPlayer   2 小时 16 分钟前

@bshu 刚去看了会 webRTC,没看到不好意思。

可能我刚刚的表述有误,2 个 Tab 一个显示“正在连接 36423ab0-14ce-11ea-afbb-95dced5392d1 ...”,另一个显示“a578e1d0-14cf-11ea-afbb-95dced5392d1 开始连接你...”。

重新测试之后,还是不行。

90

justfun   1 小时 45 分钟前

太强了 一直需要这个功能。4g 网络竟然也可以


文章来源: https://www.v2ex.com/t/624805#reply90
如有侵权请联系:admin#unsafe.sh