node's net api in react-native
Go to file
Andy Prock 4458d6a089 1.0.0 2016-01-02 11:05:12 -08:00
android properly resolve remote socket for accepted connections 2016-01-02 11:00:44 -08:00
examples/rctsockets refactor android, remove useless callbacks 2015-12-31 11:02:57 -08:00
interfaces add more flow annotations 2015-12-23 10:57:51 -08:00
ios podspec version bump major 2016-01-02 11:05:05 -08:00
.eslintignore add more flow annotations 2015-12-23 10:57:51 -08:00
.eslintrc start integrating static analysis 2015-12-16 15:05:08 -08:00
.flowconfig add more flow annotations 2015-12-23 10:57:51 -08:00
.gitignore add android support 2015-12-29 16:00:18 -08:00
LICENSE prepare for public release 2016-01-02 11:03:35 -08:00
README.md prepare for public release 2016-01-02 11:03:35 -08:00
TcpServer.js stub out missing net.js apis 2015-12-31 13:40:43 -08:00
TcpSocket.js stub out missing net.js apis 2015-12-31 13:40:43 -08:00
TcpSockets.js push socket creation into connect and listen methods 2015-12-28 11:12:21 -08:00
base64-str.js add more flow annotations 2015-12-23 10:57:51 -08:00
package.json 1.0.0 2016-01-02 11:05:12 -08:00

README.md

TCP in React Native

node's net API in React Native

This module is used by Peel

Install

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.peel.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 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

Andy Prock

PR's welcome!

originally forked from react-native-udp