@4players/odin-nodejs
TypeScript icon, indicating that this package has built-in type declarations

0.10.3 • Public • Published

ODIN Node JS

Native Node JS bindings for the ODIN SDK. It is based on the ODIN Native SDK and wraps the C++ code into a Node JS module.

Check out documentation and guides at developers.4players.io.

Beta!

This SDK is currently in beta. This means that the API is not final and might change in the future. It's also not ready for production use as there might be bugs, memory leaks or other issues. But it's good enough for testing AI integration, recording or other interesting use cases.

If you have any questions or feedback, please reach out to us at our Discord Server.

ODIN Node JS compared to Web SDK

We have a JavaScript/TypeScript SDK that has fallback code for WebRTC and can be used in the browser. While this also works on NodeJS (to some extent) it is not as performant as the native bindings and also has some limitations. For bots and other advanced use cases we provide this native Node JS SDK.

While we try to keep the API as similar as possible, there are some differences. While wrapping things in objects in JavaScript and TypeScript for better separating doing so in native C/C++ is harder and error prone. Therefore we decided to only use C/C++ and objects where required. For example, the WebSDK provides an OdinPeer object that wraps various methods and properties. For bots and other NodeJS use cases you typically don't need that and therefore we decided to not make things more complex than required. You typically only get a peerId and mediaId and that's it. But for most use cases this is enough, and you are always free to build your own wrapper where required.

The most prominent difference is, that the NodeJS SDK allows you to get the raw audio data from the ODIN server. This allows you to record audio or sending audio into the room. While the WebSDK provides a similar functionality it is based on Web Audio that is not available on NodeJS - therefore it does not make much sense to wrap and polyfill all of that while it's super easy (and fast) to wrap the ODIN native SDK into NodeJS bindings.

Having two libs also allows us to optimize for each platform without having to work through many use cases.

Prerequisites

This NodeJS SDK is based on the native ODIN SDK and is implemented via Native NodeJS bindings. This means that during npm install this module will be compiled, which means you may need to have a compiler installed.

For some target systems, precompiled libraries are provided:

  • macOS (x86_64 and arm64)
  • Windows (x86_64)
  • Linux (x86_64)

Otherwise you need to have a C++ compiler installed. On macOS, you can install XCode and the command line tools. On Linux you need to have GCC installed. More information can be found here: node-gyp.

Getting Started and compiling

Add the package to your project:

npm install --save @4players/odin-nodejs

This will compile the NodeJS bindings for the "local" machine. We provide a few precompiled libraries so you don't need to have GCC and compilers installed. This is especially useful for CI/CD pipelines.

Dependencies

It has deps to the native ODIN SDK. A couple of libraries for typical use cases (i.e. macOS, Windows and Linux) is provided in the libs folder. If you have some fancy platform, you might need to compile the ODIN SDK and put the lib in the folder according this name scheme: platform-arch.

Examples

We provide a few examples in the tests folder to get you started quickly.

Readme

Keywords

none

Package Sidebar

Install

npm i @4players/odin-nodejs

Weekly Downloads

3

Version

0.10.3

License

MIT

Unpacked Size

270 MB

Total Files

38

Last publish

Collaborators

  • svenpaulsen
  • pschuster