bhspitmonkey / ninjam-js Goto Github PK
View Code? Open in Web Editor NEWThe Ninjam music collaboration client reimplemented using JavaScript.
The Ninjam music collaboration client reimplemented using JavaScript.
It would be cool if we could register as a handler for links like ninjam://ninbot.com:2052 and launch/connect automatically.
Electron has some capabilities for doing this (via electron-packager/electron-builder options). Probably not possible in the Chrome app.
Should be fairly simple using Web MIDI.
Hello. I came across Ninjam JS some days ago and I find it a very interesting project.
Currently I'm collaborating with Jamtaba2 ninjam client (https://github.com/elieserdejesus/JamTaba) and we are trying to find a solution to some encoding problems related to the Chat messages when different clients are communicating (see elieserdejesus/JamTaba#441 for more info)
The problem seems to be solved for the clients that uses UTF-8 encoding. I did some tests using NINJAM JS (elieserdejesus/JamTaba#441 (comment)), but the result was not good.
Is it possible that you could adopt the UTF-8 standard so non-english users can chat in their native languages cross-platform?
Cheers.
Jon
I've been using the app for a while, it's very practical. But chrome says it will no longer support it, will you update it? Chrome gave it time until December.
Thanks...
Is it possible to configure the input and output devices for this app? Is audio configuration done through the browser, for instance?
simple as that
updated to latest npm after clearing cache to alleviate segmentation fault
all other ipad apps closed to free resources and ipad restarted, with time for wifi to come online
cd to ninjam-js directory in non-shared iSH file area placed git clone to avoid file permissions issue
npm install crashes iSH partway through, reliably
had been hoping to simply place build contents onto a personal webserver account in a private area to run what seemed to be all browser related code since getting a .crx file for chrome running on ipad seems to possibly require some shifty maneuvers to utilize safari's only ipad available browser extension mechanism, and seems to necessitate desktop hardware, so far as websearch declares
REST API notes:
Protocol difference notes:
12:46 < stefanha> Hmm...I didn't document the ACL
12:47 < stefanha> The jam network protocol differences aren't documented.
12:47 < stefanha> They are minor though.
12:48 < stefanha> One difference is that text is UTF-8
12:48 < BHSPiMonkey> I saw the different client version value, but didn't finish figuring out the auth differences
12:48 < BHSPiMonkey> oh, that's nice
12:48 < stefanha> Auth is:
12:49 < stefanha> 1. Client posts secret to /tokens/ REST API (using HTTP Authentication with username/password)
12:49 < stefanha> 2. Client connects to jam server and uses the secret as the "password" instead of the user's account password
12:49 < stefanha> The advantage of this approach is that the jam server doesn't need the plaintext password,
12:50 < stefanha> so account passwords can be stored hashed/salted instead of as plaintext by jammr.
12:51 < BHSPiMonkey> Do I need to request a different token each time the user connects to a server?
12:51 < stefanha> BHSPiMonkey: Tokens expire so it's best to generate a new token and post it each time the user starts the app
12:52 < BHSPiMonkey> OAuth2 or custom?
12:52 < stefanha> It is a custom authentication system.
12:52 < stefanha> But fairly simple
12:52 < stefanha> See JammrLoginDialog::login()
12:53 < stefanha> hexToken = QCryptographicHash::hash(QUuid::createUuid().toRfc4122(), QCryptographicHash::Sha1).toHex();
12:53 < stefanha> The client generates a random secret token.
12:53 < stefanha> It POSTs the secret token to the REST API: /tokens/<username>
12:53 < stefanha> with HTTP Authentication <username>:<password>
12:54 < stefanha> So the REST API server is the one that does the account login.
12:54 < stefanha> Now that the secret token has been set, the client can connect to a jam server.
12:54 < stefanha> The jam server will retrieve the secret token for the user. The secret token is used as the "password" in NINJAM auth.
12:55 < stefanha> And the client proved that it owns the account by POSTing the token successfully.
French, Spanish, German, etc.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.