WindRunnerMax/FileTransfer

FAQ

Opened this issue · 0 comments

BLOG

FAQ

Q: 在公司内部的局域网无法相互发现以及数据传输。

A: 通常公司内部的网络环境会更复杂,且对称型NAT无法在公网环境下实现NAT穿透。这种情况下比较建议在公司内部部署服务,在公司内部通常就不会再存在NAT,每个设备都会有独立的局域网IP地址,当然在公司内部网络部署STUN/TURN也很方便(coturn),都可以解决这个问题。

Q: 某些移动端浏览器无法下载blob:https://xxx的文件地址。

A: 这是一个优化方向,通过WebRTC传输的文件更像是流式下载的数据,但是没有Content-Disposition: attachment; filename="name.xxx" 的响应头,此时便不会将其作为文件下载。在这种情况下实际上可以借助Service Worker来作为后端服务,将数据片转发到SW后添加attachment响应头转发回来,可以解决blob://链接的下载问题,并且还通过实现流式下载避免了超大文件的传输问题。

Q: 即使是在局域网中也无法相互发现设备。

A: 这种情况通常是由于某个设备开启了VPN,当设备开启VPN的情况下,设备的IP地址将会被识别为代理设备的地址,因此会导致两个设备不会识别到同一个房间,导致无法相互发现。在这种情况下可以发现通过输入设备id是可以连接的,可以据此排查问题,如果还有其他可能导致局域网无法相互发现的问题会在这里继续补充。

Q: 大型文件无法传输,接收大型文件时浏览器会崩溃。

A: 在默认传输模式下,Chrome会限制内存2GB左右,Firefox会限制内存800MB左右,因此默认模式直接将文件内容暂存于内存的方式,可能会导致浏览器崩溃。当前已基于Service Worker实现大型文件的流式传输,需要在传输方的接收端的url加入mode=stream,例如https://webrtc.touchczy.top/?mode=stream。如果是自行部署的数据传输服务,需要关注Service Worker必须要运行在HTTPS的安全环境下,可以研究下Let's Encrypt的证书签发。