TCP in React Native
node's net API in React Native
Install
npm install @photon-sdk/react-native-tcp --save
if using Cocoapods
Update the following line with your path to node_modules/
and add it to your
podfile:
pod 'TcpSockets', :path => '../node_modules/react-native-tcp'
Link in the native dependency
react-native link @photon-sdk/react-native-tcp
Additional dependencies
Due to limitations in the react-native packager, streams need to be hacked in with rn-nodeify
- install rn-nodeify as a dev-dependency
npm install --save-dev rn-nodeify
- run rn-nodeify manually
rn-nodeify --install stream,process,util --hack
- optionally you can add this as a postinstall script
"postinstall": "rn-nodeify --install stream,process,util --hack"
Usage
package.json
only if you want to write require('net') or require('tls') in your javascript
{
"react-native": {
"net": "@photon-sdk/react-native-tcp",
"tls": "@photon-sdk/react-native-tcp/tls"
}
}
JS
see/run index.ios.js/index.android.js for a complete example, but basically it's just like net
var net = require("net");
var net = require("tls");
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);
});
TLS support
TLS is only supported in the client interface. To use TLS, use the tls.connect()
syntax and not socket = new tls.Socket()
syntax.
const socket = tls.connect({port: 50002, host:'electrum.villocq.com', rejectUnauthorized: false}, () => {
socket.write('{ "id": 5, "method": "blockchain.estimatefee", "params": [2] }\n')
console.log('Connected')
})
socket.on('data', (data) => {
console.log('data:' + data.toString('ascii'))
})