gradle/wrapper | ||
kotlin-js-store | ||
notes | ||
src | ||
.gitignore | ||
build.gradle.kts | ||
gradle.properties | ||
gradlew | ||
gradlew.bat | ||
LICENSE.txt | ||
README.md | ||
settings.gradle.kts |
PARanodi SECuruty 3 protocol
Current stable version is 0.4.1-SNAPSHOT. The full-dpulex RPC over websock is ok, the security level is still disabled until the protocol part will be sabilized.
This is a connection-agnostic, kotlin multiplaftorm library providing full-duplex RPC type binary protocol, effective to work with binary data, such as encrypted data, keys, multimedia, etc. Default implementation uses websockets transport (binary frames) available on all supported platofrms (currently, JS and JVM).
Its key points are:
-
simple and practical transport RPC layer, which is a primary choice when, for exaple,
wss://
level by TSL is enough, e.g. when there is no sensitive data being transmitted (games, etc). -
ktor server integration out of the box
-
can easily be used with UDP (it has not too big binary frames that do not depend on the reception order)
-
asynchronous full-duplex multithreaded RPC: any number commands from both parties can be executed in parallel.
-
coroutine-based, fast implementation.
-
compile-time types/invokation checks
-
out of the box fast coroutine based websocket client (JVM+JS) and setver (JVM:ktor) implementations are provided.
-
Kotlin Multiplatform: works the same in JVM/JS (and android too)
The protocol is a result of reconsidering the pratcial usage of its predecessor, parsec2 protocol. This version is not a part of the Universa effort but an independent personal project of universa CTO.
Status
Transport layer for wbesockets is being tested in commercial environment, while its public interface still is in aplpha stage and is not yet frozen.
Secure layer is not yet published, as R&D and desting are still under way.
You can try and use transport layer but be prepared to minor interface changes.
Installation
repsitories {
// ...
maven("https://maven.universablockchain.com")
}
//...
dependencies {
api("net.sergeych:parsec3:0.3.3")
}
Usage
Please see as an example the test WsServerKtTest.kt
FAQ
Not yet
Why not github?
Two reasons:
- I don't want to depend on US crazy ideas like limit usage of its services to anybody who their governent won't like this week.
- My ethic is against usage of open source in paid services like GitHub's copilot.
Why not universa?
Again, two reasons:
-
This is my own project, I don't want to get under any trademark, codes and whatever limits.
-
Its security model is intended to be more universal than just universa to use more trust sources, so it is again not ethically adequate to develop it using universa resources.
LICENSE
MIT, see LICENSE.txt