https://github.com/anderspitman/fibridge-proxy-js
https://github.com/anderspitman/fibridge-proxy-js
Last synced: about 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/anderspitman/fibridge-proxy-js
- Owner: anderspitman
- License: mit
- Created: 2018-09-06T21:42:42.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2019-06-06T13:24:37.000Z (almost 7 years ago)
- Last Synced: 2025-03-15T07:54:24.788Z (about 1 year ago)
- Language: JavaScript
- Size: 57.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
The point of this 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.
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](https://developer.mozilla.org/en-US/docs/Web/HTTP/Range_requests)
to that file (ie only download specific chunks) as though it were hosted on a
normal server, this will allow that.
NOTE: This is a very early work in progress and not intended to be used for
anything production ready at the moment.
# Example usage
First start up the proxy server. We'll assume it's publicly available at
example.com. It's currently hard-coded to listen for HTTP on port 7000 and
websocket connections on 8081.
```bash
node proxy/index.js
```
Create a "server" object in the browser:
```javascript
const host = "example.com";
const rsServer = new reverserver.Server({ host, port: 8081 });
```
"Host" a couple files in the browser. See `server/dist/index.html` for an
example where the user selects a file from their computer.
```javascript
const file1 = new File(["Hi there"], "file1.txt", {
type: "text/plain",
});
const file2 = new File(["I'm Old Gregg"], "file2.txt", {
type: "text/plain",
});
rsServer.hostFile('/file1', file1);
rsServer.hostFile('/file2', file2);
```
Retrieve the files using any http client:
```bash
curl example.com:7000/file1
Hi there
curl example.com:7000/file2
I'm Old Gregg
```
Ranged requests work too:
```bash
curl -H "Range: bytes=0-2" example.com:7000/file1
Hi
```