# octobus

> fast, simple request/response bus based on octobit

Latest version **0.0.1** (published 2015-01-08) · MIT license · 0 weekly downloads

## Install

```sh
npm install octobus
pnpm add octobus
yarn add octobus
bun add octobus
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.1 |
| Published | 2015-01-08 |
| First published | 2015-01-08 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | David Sky |
| Maintainers | david_sky |
| Keywords | net, tcp, rpc, messaging, octobit |

## Links

- npm: https://www.npmjs.com/package/octobus
- Repository: https://github.com/davidSky/node-octobus
- Issues: https://github.com/davidSky/node-octobus/issues
- npm.io page: https://npm.io/package/octobus

## Dependencies (3)

- [octobit](https://npm.io/package/octobit.md) ^0.0.4
- [net-buffer](https://npm.io/package/net-buffer.md) ^0.0.7
- [net-socket-reconnect](https://npm.io/package/net-socket-reconnect.md) ^0.0.2

## Recent versions

- 0.0.1 (latest) — 2015-01-08

## README

#Octobus
Fast, simple request/response bus based on [Octobit](https://github.com/davidSky/node-octobit) codec.

## Usage: server
.createServer() and .connect() accept Nodejs's default parameters.
```js
var Octobus= require('octobus')
var bus= new Octobus('./structures') // path to *.octo.json folder
// example directory have one file "heartbeat.octo.json"
var server= bus('haExample').createServer().listen(8181)

server.on('request', function(req, callback)
{
	if( req && req.get('heartbeat').ping )
	 	console.log('ping')
	callback( {heartbeat: {pong: 1} } )
})
```
## Usage: client
.connect() accept Nodejs's default parameters.
```js
var Octobus= require('octobus')
var bus= new Octobus('./structures')
var client= bus('haExample').connect(8181)

client.request({heartbeat: {ping: 1}}, function(res)
{
	 if( res && res.get('heartbeat').pong )
	 	console.log('pong')
	 else
	 	console.log('request timeout')
})
```
> additionally .connect() can accept reconnect options and {requestTimeout: 500}

---
# API
## API: var Bus= new Octobud(pathToStructFolder)
Path must be a valid directory containing structures named *.octo.json

## API: Server= Bus([allowe]).createServer
`allowed` can be an array, string or undefined. When `allowed` is provided server will only server responses to clients requesting `allowed` structures. If client request structure that is not allowed server will destroy client's socket
`createServer` is the default .createServer() from Nodejs's net module.
## API: Server.on('request', function(object, callback){})
`object` is [Octobject](https://github.com/davidSky/node-octobit)
`callback` is not undefiend if client is expecting a response, callback(newObejct)

## API: Client= Bus(structName).connect()
`structuName` must be an existing file in the strctures folder. Each client can .connect() to a server using only one structure name. 
`connect` is the deafult .connect() method from Nodejs's net module with the addition of [reconnect](https://github.com/davidSky/node-net-socket-reconnect) module. Connect will also accept an additional parameter {requestTimeout: 100} 

## API: Client.request(object[, callback])
`object` to send to server
`callback` optional will be called on server's response with received response, unless timeout before in which case called with undefiend


## Installation
```
npm install octobus
```

---
_Source: https://npm.io/package/octobus · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
