node's dgram API in React Native
This module is used by Tradle
-
Create a new react-native project. Check react-native getting started
-
In your project dir:
npm install --save react-native-udpsocket
react-native link react-native-udpsocket
# OR, if you're using react-native older than 0.31:
rnpm link react-native-udpsocket
-
support >= Android 7.0
-
Register and load the Native Module in your Main application (import, getPackages)
- Note: prior to react-native 0.29.2, this should happen in your Main Activity
...
import com.tradle.react.UdpSocketsModule; // <--- import //
public class MainApplication extends Application implements ReactApplication {
...
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new UdpSocketsModule() // <- add here //
);
}
}
Buckle up, Dorothy
only if you want to write require('dgram') in your javascript
{
"browser": {
"dgram": "react-native-udpsocket"
}
}
see/run index.js for a complete example, but basically it's just like dgram
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')
})
})
socket.on('message', function(msg, rinfo) {
console.log('message was received', msg)
})
If you want to send and receive node Buffer objects, you'll have to "npm install buffer" and set it as a global for UdpSockets to pick it up:
global.Buffer = global.Buffer || require('buffer').Buffer
add select tests from node's tests for dgram
Mark Vayngrib
Ellen Katsnelson
Tradle, Inc.
PR's welcome!