anderspitman / fibridge-host-js

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

The point of fibridge (FIle BRIDGE) is to allow your browser to "host" files which can be streamed over HTTP. This requires a proxy server to handle the HTTP requests and forward them to the browser over websockets. The proxy server lives here.

Why would this be useful? If the user has a very large file (genomic data files can easily be in the 20GB-200GB range), and you want to make ranged requests to that file (ie only download specific chunks) as though it were hosted on a normal server, fibridge provides this functionality.

NOTE: This is an early work in progress and not quite ready to be used for in production.

Example usage

First install the proxy server. See here.

A simple example is below. For a more complete implementation, see the source for fibridge-gui-js.

Create a Hoster object in the browser and host a couple files. See dist/index.html for a working example where the user selects a file from their computer.

fibridge.createHoster({ proxyAddress: 'localhost', port: 8080, secure: false }).then((hoster) => {

  const file1 = new File(["Hi there"], "file1.txt", {
    type: "text/plain",
  });
  
  const file2 = new File(["I'm Old Gregg"], "file2.txt", {
    type: "text/plain",
  });
  
  hoster.hostFile({ path: '/file1', file: file1 });
  hoster.hostFile({ path: '/file2', file: file2 });
});

Retrieve the files using any http client:

curl localhost:8080/file1
Hi there
curl localhost:8080/file2
I'm Old Gregg

Ranged requests work too:

curl -H "Range: bytes=0-2" localhost:8080/file1
Hi

About

License:MIT License


Languages

Language:JavaScript 100.0%