文件在PHP中进行点对点共享

use*_*620 0 php p2p file sharing

这个问题对我来说非常重要,因为我正在用PHP开发一个聊天系统,我想允许用户通过某种点对点系统在它们之间共享文件.

现在我知道点对点有独立的协议,HTTP不是其中之一,但我认为它在某种程度上是可能的.

像用户A和用户B都连接,A希望向B发送1GB文件,有2个解决方案:

  • 懒惰的:A将他的文件完全上传到服务器,然后B下载它,这使服务器更像是一个"存储"服务器而不是聊天服务器.

  • 我判断为好的:用户A向B发送文件,而不是在传输之前实际存储在服务器上.

这在PHP中是否可行?

先感谢您.

Ric*_*haw 6

让我们考虑一下你的问题.

解决方案1看起来像这样:

User A <----->  Server -------> User B
                (PHP)
Run Code Online (Sandbox Code Playgroud)

也就是说,服务器向用户A提供上载表单,然后用户A将文件发送到服务器.用户B从服务器获取文件.

解决方案2如下所示:

Server ----->  User A
Server ----->  User B
User A ----->  User B
Run Code Online (Sandbox Code Playgroud)

这次,服务器向用户A和B提供一些代码,然后允许用户A与用户B通信.

应该很清楚,服务器不能是将文件发送到B的服务器,并且由于服务器是PHP运行的唯一地方,因此不能使用PHP来发送文件.

用户A和B可以保证共享的语言是Javascript.幸运的是,有一个非常新的规范来解决这个问题,称为WebRTC(RTC代表实时通信).

它旨在解决您遇到的问题,您应该使用它.它目前仅适用于Chrome和Firefox Nightlies.最近,它已经变得足够稳定,Chrome可以与Firefox通信,而不仅仅是Chrome到Chrome和Firefox到Firefox.

应该很清楚,这是一个新的!

根据您的项目和您正在做的事情的范围,这可能是也可能不是一个好的选择.

http://www.webrtc.org/可能会帮助你.

https://webrtc-experiment.appspot.com/file-hangout/是您尝试做的演示.

https://webrtc-experiment.appspot.com/docs/how-file-broadcast-works.html是有关如何操作的一些信息.