# xmsg

> cluster app msg center

Latest version **1.1.2** (published 2016-12-14) · MIT license · 0 weekly downloads

## Install

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

## Health

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

Positive: no vulnerabilities.

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

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.1.2 |
| Published | 2016-12-14 |
| First published | 2016-10-09 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Node | 0.10.x \|\| 0.11.x |
| Dependencies | 3 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | hardog |
| Maintainers | hardog |
| Keywords | cluster, msg, center, nodejs |

## Links

- npm: https://www.npmjs.com/package/xmsg
- Repository: https://github.com/hardog/xmsg
- Issues: https://github.com/hardog/xmsg/issues
- npm.io page: https://npm.io/package/xmsg

## Dependencies (3)

- [axon](https://npm.io/package/axon.md) ^2.0.2
- [lodash](https://npm.io/package/lodash.md) ^4.15.0
- [promise](https://npm.io/package/promise.md) ~7.1.1

## Recent versions

- 1.1.2 (latest) — 2016-12-14
- 1.1.1 — 2016-12-03
- 1.1.0-2 — 2016-11-27
- 1.1.0-1 — 2016-11-27
- 1.1.0 — 2016-11-25
- 1.0.22 — 2016-11-25
- 1.0.21 — 2016-11-24
- 1.0.20 — 2016-11-24
- 1.0.19 — 2016-11-24
- 1.0.18 — 2016-11-23
- 1.0.17 — 2016-11-16
- 1.0.16 — 2016-11-15
- 1.0.15 — 2016-11-14
- 1.0.14 — 2016-11-14
- 1.0.13 — 2016-11-13
- … 14 more at https://npm.io/package/xmsg/versions

## README

# XMSG

[![Build Status](https://travis-ci.org/hardog/xmsg.svg?branch=master)](https://travis-ci.org/hardog/xmsg)
[![Coverage Status](https://img.shields.io/codecov/c/github/hardog/xmsg.svg)](https://codecov.io/github/hardog/xmsg?branch=master)
[![License](https://img.shields.io/npm/l/xmsg.svg)](https://www.npmjs.com/package/xmsg)
[![npm Version](https://img.shields.io/npm/v/xmsg.svg)](https://www.npmjs.com/package/xmsg)

cluster app msg communication center!

# Features

- all function based on [Promise](#https://www.promisejs.org/)
- create listen server
- send to one/bunch server
- performance log
- log cache
- connection pool size
- keep alive with server
- msg queue size set when loss connection


# Install

`$ npm install xmsg -g`


# Benchmark

```
// 1C1G  in virutal box 
// uname -a: Linux localhost.localdomain 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

max: 17750 ops/s
min: 12900 ops/s

```


# Test

run test:
```
$ npm test
```

run test coverage:
```
$ npm run cover
```

# SETTINGS

- **xmsg.set('keep_alive', true), default is false**

if keep alive with server

- **xmsg.set('profile', true), default is false**

show the following profile log
```
Tag:api Host:v10-2-23-23.hx Target:10.2.21.186:8103@file.get Start:Thu Nov 24 2016 11:57:38 GMT+0800 (CST) Net1:147ms Fn:1ms Net2:6ms Attach:None

Net1: the time from client to server
Fn: server deal through time
Net2: the time from server to client
```

- **xmsg.set('q_timeout', 2000), default is 1000**

the time to flush profile log queue, be sure profile is on

- **xmsg.set('pool_size', 100), default is 20**

pool size for client connection to prevent lots of request use one connection

- **xmsg.set('hwm', 1000), default is Infinity**

when client loss connection with server, msg would be store in queue, hwm is the queue size


# Usage

## xmsg.reset()

clear previous settings.

## xmsg.create_server

```
// local machine create a server listen port 3000
// by `reply` return msg to client
xmsg.create_server(3000, {
    fn: function(data, reply){reply('hello')},
    args: function(data, reply){reply(data)},
    multi: {
        fn: function(data, reply){reply(data)}
    }
});
```

## xmsg.send_one

```
// send to one of the cluster machine
// machine address: 127.0.0.1:3001
// server fn: fn
// passed data: 'hello'
xmsg.send_one('127.0.0.1:3001', 'fn', 'hello'))
```

## xmsg.send_bunch

the target server have different method name
```
// send to multi machine of the cluster
xmsg.send_bunch([
    ['127.0.0.1:3000', 'fn1'],
    ['127.0.0.1:3001', 'fn2'],
    ['137.233.222.123:3001', 'fn3']
], 'hello'))
```

## xmsg.send_bunch2

the target server share the same method name
```
// send to multi machine of the cluster
xmsg.send_bunch2(['127.0.0.1:3000', '127.0.0.1:3001'], 'fn', hello'))
```

# TODO

- 出错情况添加`status: false`标记, 参考其他库的出错提示


# License

[MIT](https://github.com/hardog/xmsg/blob/master/LICENSE)

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