0b9c8f3464 | ||
---|---|---|
android | ||
examples/rctsockets | ||
interfaces | ||
ios | ||
.eslintignore | ||
.eslintrc | ||
.flowconfig | ||
.gitignore | ||
README.md | ||
TcpServer.js | ||
TcpSocket.js | ||
TcpSockets.js | ||
base64-str.js | ||
package.json |
README.md
TCP in React Native
node's net API in React Native
originally forked from react-native-udp
This module is used by Peel
Install
-
Create a new react-native project. Check react-native getting started
-
In your project dir:
npm install --save react-native-tcp
iOS
-
Drag TcpSockets.xcodeproj from node_modules/react-native-tcp/ios into your XCode project.
-
Click on the project in XCode, go to Build Phases, then Link Binary With Libraries and add
libTcpSockets.a
Android
android/settings.gradle
...
include ':react-native-tcp'
project(':react-native-tcp').projectDir = new File(settingsDir, '../node_modules/react-native-tcp/android/core')
android/app/build.gradle
dependencies {
...
compile project(':react-native-tcp')
}
- register module (in MainActivity.java)
...
import com.tradle.peel.*; // <--- 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 TcpSocketsModule()) // <- 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('net') in your javascript
{
"browser": {
"net": "react-native-tcp"
}
}
JS
see/run index.js for a complete example, but basically it's just like net
var net = require('net');
// OR, if not shimming via package.json "browser" field:
// var net = require('react-native-tcp')
var server = net.createServer(function(socket) {
socket.write('excellent!');
}).listen(12345);
var client = net.createConnection(12345);
client.on('error', function(error) {
console.log(error)
});
client.on('data', function(data) {
console.log('message was received', data)
});
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 TcpSockets to pick it up:
global.Buffer = global.Buffer || require('buffer').Buffer
TODO
add select tests from node's tests for net
Contributors
PR's welcome!