Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/reklatsmasters/unicast
Unicast implementation of UDP Datagram sockets.
https://github.com/reklatsmasters/unicast
dgram javascript js node nodejs udp unicast
Last synced: 24 days ago
JSON representation
Unicast implementation of UDP Datagram sockets.
- Host: GitHub
- URL: https://github.com/reklatsmasters/unicast
- Owner: reklatsmasters
- License: mit
- Created: 2018-02-05T22:10:55.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2019-05-19T00:42:08.000Z (over 5 years ago)
- Last Synced: 2024-10-05T05:30:56.483Z (about 1 month ago)
- Topics: dgram, javascript, js, node, nodejs, udp, unicast
- Language: JavaScript
- Size: 137 KB
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- License: LICENSE
Awesome Lists containing this project
README
# unicast
[![Build Status](https://travis-ci.org/reklatsmasters/unicast.svg?branch=master)](https://travis-ci.org/reklatsmasters/unicast)
[![npm](https://img.shields.io/npm/v/unicast.svg)](https://npmjs.org/package/unicast)
[![node](https://img.shields.io/node/v/unicast.svg)](https://npmjs.org/package/unicast)
[![license](https://img.shields.io/npm/l/unicast.svg)](https://npmjs.org/package/unicast)
[![downloads](https://img.shields.io/npm/dm/unicast.svg)](https://npmjs.org/package/unicast)
[![Coverage Status](https://coveralls.io/repos/github/reklatsmasters/unicast/badge.svg?branch=master)](https://coveralls.io/github/reklatsmasters/unicast?branch=master)[Unicast](https://en.wikipedia.org/wiki/Unicast) implementation of UDP Datagram sockets.
## Usage
```js
const unicast = require('unicast')
const fs = require('fs')const socket = unicast.createSocket({
type: 'udp4',
port: 2222,
remotePort: 1111,
remoteAddress: '127.0.0.1'
})// now the `socket` can receive packets ONLY
// from 127.0.0.1:1111socket.pipe(fs.createWriteStream('log.txt', { encoding: 'utf8' }))
```## API
* `createSocket(socket: dgram.Socket, options: Options): Socket`
* `createSocket(options: Options): Socket`Creates an unicast UDP Datagram socket. A `createSocket()` function also accept all options for `dgram.createSocket()`. If `socket` is provided, these options will be ignored.
* `options.remotePort: number`
The numeric representation of the remote port.
* `options.remoteAddress: string`
The string representation of the remote IP address.
* `options.socket: dgram.Socket`
An optional internal `dgram` socket used as transport layer.
* `options.port: number [default = 0]`
The string representation of the local IP address. If `port` is not specified or is `0`, the operating system will attempt to bind to a random port.
* `options.address: string [default = 0.0.0.0]`
The string representation of the local IP address. If `address` is not specified or is `0.0.0.0`, the operating system will attempt to listen on all addresses.
* `options.closeTransport: boolean [default = true]`
The internal socket will be closed when the `unicast.Socket` is being closed. You can change this behavior with this option.
* `options.messagesFilter: function(socket: Socket, message: Buffer, rinfo: Object): bool`
Custom filter of an incoming messages. By default it check the remote IP address and the remote port.
* `class Socket`
This class is an abstraction of an unicast UDP socket. A `Socket` is also a [duplex stream](https://nodejs.org/api/stream.html#stream_class_stream_duplex), so it can be both readable and writable, and it is also a [EventEmitter](https://nodejs.org/api/events.html#events_class_eventemitter).
* `socket.close()`
Close the underlying socket and stop listening for data on it.
* `socket.unshift(message: Buffer): bool`
The `socket.unshift()` method pushes a chunk of data back into the internal buffer. This is useful in certain situations where a stream is being consumed by code that needs to "un-consume" some amount of data that it has optimistically pulled out of the source, so that the data can be passed on to some other party.
* `socket.process(message: Buffer): bool`
The `socket.process()` method helps to handle a chunk of data from an another source. Almost the same as `socket.unshift()` but pushes a chunk of data into the end of the internal buffer.
* `socket.localAddress: string`
The string representation of the local IP address. For example, `74.125.127.100` or `2001:4860:a005::68`.
* `socket.localPort: number`
The numeric representation of the local port. For example, `80` or `21`.
* `get/set socket.remoteAddress: string`
The string representation of the remote IP address. For example, `74.125.127.100` or `2001:4860:a005::68`.
* `get/set socket.remotePort: number`
The numeric representation of the remote port. For example, `80` or `21`.
## License
MIT, 20!8 (c) Dmitriy Tsvettsikh