React Native TCP socket API for Android & iOS
npm install rn-tcp-socket
React Native TCP socket API for Android & iOS. It allows you to create TCP clients and servers sockets, simulating node's net API.
- Getting started
- Compatibility
- Usage
- API
- Client
- Server
- Maintainers
- Acknowledgments
- License
```
yarn add react-native-tcp-socket
or npm:
``
npm install --save react-native-tcp-socket
#### Using React Native >= 0.60
Linking the package manually is not required anymore with Autolinking.
- iOS Platform:
$ cd ios && pod install && cd .. # CocoaPods on iOS needs this extra step
- Android Platform:
Modify your android/build.gradle configuration to match minSdkVersion = 21:`
`
buildscript {
ext {
...
minSdkVersion = 21
...
}
Modify your android/app/src/main/AndroidManifest.xml and add the following:
``
#### Using React Native < 0.60
You then need to link the native parts of the library for the platforms you are using. The easiest way to link the library is using the CLI tool by running this command from the root of your project:
$ react-native link react-native-tcp-socket
If you can't or don't want to use the CLI tool, you can also manually link the library using the instructions below (click on the arrow to show them):
Manually link the library on iOS
1. In XCode, in the project navigator, right click Libraries ➜ Add Files to [your project's name]node_modules
2. Go to ➜ react-native-tcp-socket and add TcpSockets.xcodeprojlibTcpSockets.a
3. In XCode, in the project navigator, select your project. Add to your project's Build Phases ➜ Link Binary With LibrariesCmd+R
4. Run your project ()<
Manually link the library on Android
1. Open up android/app/src/main/java/[...]/MainApplication.javaimport com.asterinet.react.tcpsocket.TcpSocketPackage;
- Add to the imports at the top of the filenew TcpSocketPackage()
- Add to the list returned by the getPackages() methodandroid/settings.gradle
2. Append the following lines to :`
`
include ':react-native-tcp-socket'
project(':react-native-tcp-socket').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-tcp-socket/android')
android/app/build.gradle
3. Insert the following lines inside the dependencies block in :`
`
compile project(':react-native-tcp-socket')
you will need to upgrade before attempting to use this library latest version.|
react-native-tcp-socket version | Required React Native Version |
| ----------------------------------------- | --------------------------------------------------------------------------------- |
| 3.x.x | >= 0.61 |
| 1.2.2 | >= 0.?? |Usage
Import the library:
`javascript
import TcpSocket from 'react-native-tcp-socket';
// var net = require('react-native-tcp-socket');
`
$3
`javascript
// Create socket
var client = TcpSocket.createConnection(options);client.on('data', function(data) {
console.log('message was received', data);
});
client.on('error', function(error) {
console.log(error);
});
client.on('close', function(){
console.log('Connection closed!');
});
// Write on the socket
client.write('Hello server!');
// Close socket
client.destroy();
`
$3
`javascript
var server = TcpSocket.createServer(function(socket) {
socket.on('data', (data) => {
socket.write('Echo server', data);
}); socket.on('error', (error) => {
console.log('An error ocurred with client socket ', error);
});
socket.on('close', (error) => {
console.log('Closed connection with ', socket.address());
});
}).listen(12345, '0.0.0.0');
server.on('error', (error) => {
console.log('An error ocurred with the server', error);
});
server.on('close', () => {
console.log('Server closed connection');
});
`API
$3
* Methods:
* [createConnection(options[, callback])](#createconnection)
* [write(data[, encoding][, callback])](#write)
* destroy()####
createConnection()
createConnection(options[, callback]) creates a TCP connection using the given options.
##### createConnection: options
Required. Available options for creating a socket. It must be an object with the following properties:| Property | Type | iOS | Android |Description |
| --------------------- | ------ | :--: | :-----: |-------------------------------------------------------------------------------------------------- |
|
port | | ✅ | ✅ | Required. Port the socket should connect to. |
| host | | ✅ | ✅ | Host the socket should connect to. IP address in IPv4 format or 'localhost'. Default: 'localhost'. |
| localAddress | | ✅ | ✅ | Local address the socket should connect from. If not specified, the OS will decide. It is highly recommended to specify a localAddress to prevent overload errors and improve performance. |
| localPort | | ✅ | ✅ | Local port the socket should connect from. If not specified, the OS will decide. |
| interface| | ❌ | ✅ | Interface the socket should connect from. If not specified, it will use the current active connection. The options are: 'wifi', 'ethernet', 'cellular'. |
| reuseAddress| | ❌ | ✅ | Enable/disable the reuseAddress socket option. Default: true. |Note: The platforms marked as ❌ use the default value.
####
write()
* data:
* encoding: . Only used when data is string. Default: utf8.
* callback : write(data[, encoding][, callback]) sends data on the socket. The second parameter specifies the encoding in the case of a string — it defaults to UTF8 encoding.$3
* Methods:
* createServer(callback)
* [listen(options[, callback])](#listen)
* close()####
listen()
listen(options[, callback]) creates a TCP server socket using the given options.#####
listen: options
Required. Available options for creating a server socket. It must be an object with the following properties:| Property | Type | iOS | Android |Description |
| --------------------- | ------ | :--: | :-----: |-------------------------------------------------------------------------------------------------- |
|
port | | ✅ | ✅ | Required. Port the socket should listen to. |
| host | | ✅ | ✅ | Host the socket should listen to. IP address in IPv4 format or 'localhost'. Default: '0.0.0.0'. |
| reuseAddress| | ❌ | ✅ | Enable/disable the reuseAddress socket option. Default: true. |Note: The platforms marked as ❌ use the default value.
Maintainers
Looking for maintainers!Acknowledgments
* iOS part originally forked from @aprock react-native-tcp
* react-native-udp
License
The library is released under the MIT license. For more information see
LICENSE`.