<commit_before># UDP in React Native

node's [dgram](https://nodejs.org/api/dgram.html) API in React Native

This module is used by [Tradle](https://github.com/tradle)

## Install

* Create a new react-native project. [Check react-native getting started](http://facebook.github.io/react-native/docs/getting-started.html#content)

* In your project dir:
```
npm install --save react-native-udp
```

### `iOS`

* Drag UdpSockets.xcodeproj from node_modules/react-native-udp/ios into your XCode project.

* Click on the project in XCode, go to Build Phases, then Link Binary With Libraries and add `libUdpSockets.a`

### `Android`

* `android/settings.gradle`

```gradle
...
include ':react-native-udp'
project(':react-native-udp').projectDir = new File(settingsDir, '../node_modules/react-native-udp/android')
```
* `android/app/build.gradle`

```gradle
dependencies {
	...
	compile project(':react-native-udp')
}
```

* register module (in MainActivity.java)

```java
...

import com.tradle.react.*; // <--- import

public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
	...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mReactRootView = new ReactRootView(this);

        mReactInstanceManager = ReactInstanceManager.builder()
                .setApplication(getApplication())
                .setBundleAssetName("index.android.bundle")
                .setJSMainModuleName("index.android")
                .addPackage(new MainReactPackage())
                .addPackage(new UdpSocketsModule())           // <- add here
                .setUseDeveloperSupport(BuildConfig.DEBUG)
                .setInitialLifecycleState(LifecycleState.RESUMED)
                .build();

        mReactRootView.startReactApplication(mReactInstanceManager, "YourProject", null);

        setContentView(mReactRootView);
    }
}
```

Buckle up, Dorothy

## Usage

### package.json

_only if you want to write require('dgram') in your javascript_

```json
{
  "browser": {
    "dgram": "react-native-udp"
  }
}
```

### JS

_see/run [index.js](examples/rctsockets) for a complete example, but basically it's just like dgram_

```js
var dgram = require('dgram')
// OR, if not shimming via package.json "browser" field:
// var dgram = require('UdpSockets')
var socket = dgram.createSocket('udp4')
socket.bind(12345)
socket.once('listening', function() {
  var buf = toByteArray('excellent!')
  socket.send(buf, 0, buf.length, remotePort, remoteHost, function(err) {
    if (err) throw err

    console.log('message was sent')
  })<commit_msg>fix example in readme<commit_after># UDP in React Native

node's [dgram](https://nodejs.org/api/dgram.html) API in React Native

This module is used by [Tradle](https://github.com/tradle)

## Install

* Create a new react-native project. [Check react-native getting started](http://facebook.github.io/react-native/docs/getting-started.html#content)

* In your project dir:
```
npm install --save react-native-udp
```

### `iOS`

* Drag UdpSockets.xcodeproj from node_modules/react-native-udp/ios into your XCode project.

* Click on the project in XCode, go to Build Phases, then Link Binary With Libraries and add `libUdpSockets.a`

### `Android`

* `android/settings.gradle`

```gradle
...
include ':react-native-udp'
project(':react-native-udp').projectDir = new File(settingsDir, '../node_modules/react-native-udp/android')
```
* `android/app/build.gradle`

```gradle
dependencies {
	...
	compile project(':react-native-udp')
}
```

* register module (in MainActivity.java)

```java
...

import com.tradle.react.*; // <--- import

public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler {
	...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mReactRootView = new ReactRootView(this);

        mReactInstanceManager = ReactInstanceManager.builder()
                .setApplication(getApplication())
                .setBundleAssetName("index.android.bundle")
                .setJSMainModuleName("index.android")
                .addPackage(new MainReactPackage())
                .addPackage(new UdpSocketsModule())           // <- add here
                .setUseDeveloperSupport(BuildConfig.DEBUG)
                .setInitialLifecycleState(LifecycleState.RESUMED)
                .build();

        mReactRootView.startReactApplication(mReactInstanceManager, "YourProject", null);

        setContentView(mReactRootView);
    }
}
```

Buckle up, Dorothy

## Usage

### package.json

_only if you want to write require('dgram') in your javascript_

```json
{
  "browser": {
    "dgram": "react-native-udp"
  }
}
```

### JS

_see/run [index.js](examples/rctsockets) for a complete example, but basically it's just like dgram_

```js
var dgram = require('dgram')
// OR, if not shimming via package.json "browser" field:
// var dgram = require('react-native-udp')
var socket = dgram.createSocket('udp4')
socket.bind(12345)
socket.once('listening', function() {
  var buf = toByteArray('excellent!')
  socket.send(buf, 0, buf.length, remotePort, remoteHost, function(err) {
    if (err) throw err

    console.log('message was sent')
  })
{'fraction_non_alphanumeric': 0.13500189609404625, 'fraction_numerical': 0.0026545316647705727, 'mean_word_length': 3.4552364864864864, 'pattern_counts': {'":': 4, '<': 7, '<?xml version=': 0, '>': 3, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '152950', 'n_tokens_mistral': 1701, 'n_tokens_neox': 1604, 'n_words': 377}