641b9d770e
Now forcing the host resolution to happen, which will make the UnknownHostException fire if there are problems. |
||
---|---|---|
android | ||
examples/rctsockets | ||
ios | ||
.gitignore | ||
LICENSE | ||
README.md | ||
UdpSocket.js | ||
UdpSockets.js | ||
package.json |
README.md
UDP in React Native
node's dgram API in React Native
This module is used by Tradle
Install
-
Create a new react-native project. Check react-native getting started
-
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
...
include ':react-native-udp'
project(':react-native-udp').projectDir = new File(settingsDir, '../node_modules/react-native-udp/android')
android/app/build.gradle
dependencies {
...
compile project(':react-native-udp')
}
- register module (in MainActivity.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
{
"browser": {
"dgram": "react-native-udp"
}
}
JS
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)
})
Note
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
TODO
add select tests from node's tests for dgram
Contributors
Mark Vayngrib
Ellen Katsnelson
Tradle, Inc.
PR's welcome!