beamed
A blazing fast, slim communication protocol for NodeJS IPC.
Features
- A lightweight protocol minimizes network traffic and provides high processing performance
- The TypeScript API enables you to specify strictly typed endpoints and reuse the same type definitions on client and server side
- Support for Unix, Windows, TCP and TLS sockets
- Requesting, messaging and publish / subscribe
- Send any payload (objects, buffers and strings)
- No third party dependencies
Example
shared.ts
server.ts
;; .onRequestAuthTopics.login, authenticate .listen"/tmp/auth-test";
client.ts
;; ;bc.requestAuthTopics.login, new Credentials"user", "p4ssw0rd".thenconsole.loguser;
Protocol
Message types (Not completely implementing yet).
Type | Message-Pattern | Examples |
---|---|---|
Request | <length>?<topic>\|<id>[\|payload] |
19?1\|8\|J{"foo":"bar"} 5?2\|45 |
Response | <length>.<id>[\|payload] |
17.8\|J{"foo":"bar"} 3.45 |
Error-Response | <length>X<id>\|<error-code>[\|message] |
17.8\|J{"foo":"bar"} 6X45\|42 |
Subscribe | <length>+<topic> |
2+1 |
Unsubscribe | <length>-<topic> |
2-1 |
Message / Push | <length>!<topic>[\|payload] |
17!1\|J{"foo":"bar"} 2!2 |
Where the tokens have the following format
Token | Format | Note |
---|---|---|
length | numeric | The byte length of the message content without this length (auto-generated) |
topic | utf-8 (except \| ) |
You can use TS Enums |
id | numeric | The request id (auto-generated) |
error-code | utf-8 (except \| ) |
You can use TS Enums |
message | utf-8 | Custom Error decription |
payload | utf-8 or Buffer | Prefixed by a character that determines the content type:J for Json,B for binary data,T for text |