
Product
Introducing Webhook Events for Alert Changes
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.
@triply/tus-node-server
Advanced tools
tus is a new open protocol for resumable uploads built on HTTP. This is the tus protocol 1.0.0 node.js server implementation.
:warning: Attention: We currently lack the resources to properly maintain tus-node-server. This has the unfortunate consequence that this project is in rather bad condition (out-dated dependencies, no tests for the S3 storage etc). If you want to help us with tus-node-server, we are more than happy to assist you and welcome new contributors. In the meantime, we can recommend tusd as a reliable and production-tested tus server. Of course, you can use tus-node-server if it serves your purpose.
$ npm install tus-node-server
Local File Storage
server.datastore = new tus.FileStore({
path: '/files'
});
Google Cloud Storage
server.datastore = new tus.GCSDataStore({
path: '/files',
projectId: 'project-id',
keyFilename: 'path/to/your/keyfile.json',
bucket: 'bucket-name',
});
Amazon S3
server.datastore = new tus.S3Store({
path: '/files',
bucket: 'bucket-name',
accessKeyId: 'access-key-id',
secretAccessKey: 'secret-access-key',
region: 'eu-west-1',
partSize: 8 * 1024 * 1024, // each uploaded part will have ~8MB,
tmpDirPrefix: 'tus-s3-store',
});
$ docker run -p 1080:8080 -d bhstahl/tus-node-deploy
const tus = require('tus-node-server');
const server = new tus.Server();
server.datastore = new tus.FileStore({
path: '/files'
});
const host = '127.0.0.1';
const port = 1080;
server.listen({ host, port }, () => {
console.log(`[${new Date().toLocaleTimeString()}] tus server listening at http://${host}:${port}`);
});
const tus = require('tus-node-server');
const server = new tus.Server();
server.datastore = new tus.FileStore({
path: '/files'
});
const express = require('express');
const app = express();
const uploadApp = express();
uploadApp.all('*', server.handle.bind(server));
app.use('/uploads', uploadApp);
const host = '127.0.0.1';
const port = 1080;
app.listen(port, host);
const http = require('http');
const url = require('url');
const Koa = require('koa')
const tus = require('tus-node-server');
const tusServer = new tus.Server();
const app = new Koa();
const appCallback = app.callback();
const port = 1080;
tusServer.datastore = new tus.FileStore({
path: '/files',
});
const server = http.createServer((req, res) => {
const urlPath = url.parse(req.url).pathname;
// handle any requests with the `/files/*` pattern
if (/^\/files\/.+/.test(urlPath.toLowerCase())) {
return tusServer.handle(req, res);
}
appCallback(req, res);
});
server.listen(port)
Execute code when lifecycle events happen by adding event handlers to your server.
const Server = require('tus-node-server').Server;
const EVENTS = require('tus-node-server').EVENTS;
const server = new Server();
server.on(EVENTS.EVENT_UPLOAD_COMPLETE, (event) => {
console.log(`Upload complete for file ${event.file.id}`);
});
EVENT_FILE_CREATED: Fired when a POST request successfully creates a new file
Example payload:
{
file: {
id: '7b26bf4d22cf7198d3b3706bf0379794',
upload_length: '41767441',
upload_metadata: 'filename NDFfbWIubXA0'
}
}
EVENT_ENDPOINT_CREATED: Fired when a POST request successfully creates a new upload endpoint
Example payload:
{
url: 'http://localhost:1080/files/7b26bf4d22cf7198d3b3706bf0379794'
}
EVENT_UPLOAD_COMPLETE: Fired when a PATCH request finishes writing the file
Example payload:
{
file: {
id: '7b26bf4d22cf7198d3b3706bf0379794',
upload_length: '41767441',
upload_metadata: 'filename NDFfbWIubXA0'
}
}
GET handlers:Add custom GET handlers to suit your needs, similar to Express routing.
const server = new Server();
server.get('/uploads', (req, res) => {
// Read from your DataStore
fs.readdir(server.datastore.path, (err, files) => {
// Format the JSON response and send it
}
});
const fileNameFromUrl = (req) => {
return req.url.replace(/\//g, '-');
}
server.datastore = new tus.FileStore({
path: '/files',
namingFunction: fileNameFromUrl
});
Start the demo server using Local File Storage
$ npm run demo
Or start up the demo server using Google Cloud Storage
$ npm run gcs_demo
Then navigate to the demo (localhost:1080) which uses tus-js-client
FAQs
Node.js tus server
We found that @triply/tus-node-server demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Product
Add real-time Socket webhook events to your workflows to automatically receive software supply chain alert changes in real time.

Security News
ENISA has become a CVE Program Root, giving the EU a central authority for coordinating vulnerability reporting, disclosure, and cross-border response.

Product
Socket now scans OpenVSX extensions, giving teams early detection of risky behaviors, hidden capabilities, and supply chain threats in developer tools.