0

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

现在我知道点对点有独立的协议,而 HTTP 不是其中之一,但我仍然认为这是可能的。

就像用户 A 和用户 B 都已连接,并且 A 想向 B 发送一个 1GB 的文件,有两种解决方案:

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

  • 我认为好的一个:用户A将文件发送给B,而在传输之前它实际上没有存储在服务器上。

这在PHP中可能吗?

先感谢您。

4

1 回答 1

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 通信。

需要明确的是,Server 不能是向 B 发送文件的那个,而且由于 Server 是 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是一些关于如何做的信息。

于 2013-03-08T18:23:59.980 回答