【问题标题】:Peer-to-peer file sharing with Web Sockets使用 Web Sockets 进行点对点文件共享
【发布时间】:2012-02-15 01:47:23
【问题描述】:

这是一个理论上的问题,但是,我需要将文件共享功能添加到我的 Web 套接字驱动的聊天应用程序中。我可以使用 Amazon S3 之类的服务通过发布文件链接来上传要共享的文件,但这涉及上传可能已经可以通过本地网络访问的文件(例如在同事之间共享文件) .

所以我想到有可能通过已经存在的网络套接字连接以某种方式隧道上传/下载/传输。但是,我对 HTTP 文件传输的了解还不够,无法知道下一步如何实现它。网络套接字是否存在限制以防止这种情况发生?

我将 Ruby 和 EventMachine 用于我当前的 Web 套接字实现。如果您能够提供一个高层次的概述来帮助我入门,那将非常感激。

【问题讨论】:

  • 这仍然涉及将文件上传到 Web 套接字连接的另一端(Web 服务器)和另一端从其 Web 套接字连接的另一端下载文件(再次,网络服务器)。
  • @David 是的,我想你是对的。但它仍然会避免将文件存储在服务器上(我想这可能是我想要实现的优势?)
  • 实际上,我希望这样做的真正优势是,用户可以在文件实际上传之前与聊天室中的其他用户“共享文件”并且不会'直到有人真正请求文件才开始上传。例如,如果一个文件需要 30 分钟上传,聊天室在上传完成之前不会知道该文件,那么用户也必须等待该文件下载,但是,如果上传/下载同时发生它可能会增加传输文件所花费的总时间。
  • 当您使用 ruby​​ / eventmachine,并且这个示例是在服务器端使用 javascript 时,它确实展示了如何通过 websockets 发送文件。 github.com/einaros/ws/tree/master/examples/fileapi

标签: ruby http file-upload websocket eventmachine


【解决方案1】:

这是一个仅使用 Web Sockets 和 javascript File API 传输文件的项目示例:http://www.github.com/thirtysixthspan/waterunderice

【讨论】:

    【解决方案2】:

    要允许共享文件而无需将文件上传到服务器(即同事),您现在可以使用 WebRTC DataChannel API 创建点对点连接。

    【讨论】:

    • WebRTC 支持有限。例如,Safari 和 IE 都不支持这个实验性 API。
    • 好的,但是您有更好的解决方案以对等方式传输文件吗? WebSockets 显然是一种选择,但您需要使用服务器作为两个浏览器之间的代理。所以要回答这个问题,点对点可以使用 WebRTC DataChannels 并且不是实验性 API。这是一个已定义的标准,但 Safari 和 IE 似乎对它不太感兴趣。
    猜你喜欢
    • 2017-04-24
    • 2010-12-18
    • 2019-08-30
    • 2011-01-17
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多