这个问题对我来说非常重要,因为我正在用PHP开发一个聊天系统,我想允许用户通过某种点对点系统在它们之间共享文件。
现在我知道点对点有独立的协议,HTTP不是其中之一,但我认为它仍然是可能的。
与用户A和用户B都已连接,而A希望向B发送1GB文件,有2种解决方案:
懒惰的一个:A将他的文件完全上传到服务器,然后B下载它,这使服务器更像是一个“存储”服务器而不是聊天服务器。
我判断为好的:用户A向B发送文件,而不是在传输之前实际存储在服务器上。
这在PHP中是否可行?
提前谢谢。
答案 0 :(得分:6)
让我们考虑一下你的问题。
解决方案1如下所示:
User A <-----> Server -------> User B
(PHP)
即,服务器向用户A提供上载表单,然后用户A将文件发送到服务器。用户B从服务器获取文件。
解决方案2如下所示:
Server -----> User A
Server -----> User B
User A -----> User B
这次,服务器向用户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是有关如何操作的一些信息。