Skip to content

LavaLink-protocol compatible standalone audio-sending node using Node.js.

License

Notifications You must be signed in to change notification settings

Nansess/NodeLink

 
 

Repository files navigation

NodeLink

NodeLink logo

LavaLink-protocol compatible standalone audio-sending node using Node.js.

LavaLink API coverage

  • Events
  • Filters
  • Endpoints, except route planner
  • LoadTracks endpoint, without Vimeo and Twitch.
  • Track(s) encoding & loadCaptions (NodeLink-only endpoint)
  • Resume system

Sources

  • BandCamp: Master
  • Deezer: Master
  • HTTP: Master
  • Local: Master
  • Pandora: Master dependant
  • SoundCloud: Master
  • Spotify: Master dependant
  • YouTube: Master
  • YouTube Music: Master

Note

Master means that it can directly play from the source, without using other source to get its stream.

NodeLink vs Lavalink

Performance

Because of how NodeLink works, handling audio in real-time and directly accessing services, without using any external packages, NodeLink is faster than LavaLink in both filtering and track loading.

Stability

LavaLink, as a modular project, is more stable than NodeLink. We're working on making NodeLink more stable, but this is a fact.

Resource usage

JVM itself requires a lot of resources, but not only that, LavaLink caches a lot of data, and it's not very resource-friendly.

NodeLink is written in Node.js, using low-level libraries, which allows NodeLink to be more resource-friendly than LavaLink.

CPU usage is not a factor, because both NodeLink and LavaLink use the same amount of CPU.

Features

As a new project, but already old enough to have all the features LavaLink has, NodeLink has all the features LavaLink has, and more.

LavaLink on the other hand, has plugins, which allows it to have more features than NodeLink, but NodeLink is more customizable than LavaLink, and it's easier to add features to NodeLink than LavaLink as everything is written in one place.

Usage

Minimum requirements

  • Node.js 14.0.0
  • FFmpeg or ffmpeg-static

Recommended requirements

Installation

To install NodeLink, you must clone the repository and install the dependencies.

$ git clone https://github.com/PerformanC/NodeLink
$ cd NodeLink
$ npm i

Warning

node-crc is one of the dependencies of NodeLink, and it requires a cargo installation.

Note

sodium-native dependency can be replaced with alternatives like libsodium-wrappers.

opusscript dependency can be replaced with alternatives like @discordjs/opus.

ffmpeg is required. ffmpeg-static is also supported.

Running

To run NodeLink, you need to run the following command in the root directory of NodeLink.

$ npm start

And done, you have successfully started NodeLink, and you will be able to connect to it using any Lavalink wrapper.

Support & Feedback

If you have any questions, or only want to give a feedback, about NodeLink or any other PerformanC project, join our Discord server.

License

NodeLink is licensed under PerformanC's License, which is a modified version of the MIT License, focusing on the protection of the source code and the rights of the PerformanC team over the source code.

Contributors

About

LavaLink-protocol compatible standalone audio-sending node using Node.js.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 100.0%