nativescript-simple-networking
by yaqwsx | v0.1.1
UDP and TCP sockets for NativeScript
npm i --save nativescript-simple-networking

NativeScript Simple Networking

Basic UDP and TCP sockets for NativeScript.

Supported platforms

  • Android (any device with Android 4.4 and higher)

There is no support for iOS (yet), as I am not an iOS developer. Contributions for adding iOS support are welcome!

Installing

tns plugin add nativescript-simple-networking

Usage

This plugin provides three classes: UdpServer, TcpClient and TcpServer. All of them provide similar, callback-based, interface. An example of usage is worth a thousands words and therefore here is a TypeScript example:

import {UdpServer, TcpClient, TcpServer} from "nativescript-simple-networking";
import {Address4} from "ip-address";

var udpServer = new UdpServer();
udpServer.onPacket = (sender: Address4, message: string) => {
console.log("Message from UDP: ", message);
};
udpServer.onError = (id: number, message: string) => {
console.log("UDP error for action #", id, ": ", message);
};
udpServer.onFinished = (id: number) => {
console.log("UDP finished action #", id);
};

// Start listening on port 33333
var udpConnectEvent: number = udpServer.start(33333);
console.log("UDP start event is: ", udpConnectEvent);
// Broadcast a message
var udpBroadcastEvent: number = udpServer.send("255.255.255.255", "I am alive!");
console.log("UDP broadcast event is: ", udpBroadcastEvent);

// Start a TCP server listening on port 44444 with maximum 2 clients
var tcpServer = new TcpServer(2);
tcpServer.onClient = (client: Address4) => {
console.log("New TCP client: ", client.adddress)
tcpServer.send(client, "Welcome!");
};
tcpServer.onData = (client: Address4, data: string) => {
console.log("New data from client ", client.address, ": ", data);
};
tcpServer.onError = (id: number, client: Address4, message: string) => {
if (client)
console.log("TCP server client error", client.address, ": ", message);
else
console.log("TCP server error: ", message);
};
tcpServer.onFinished = (id: number) => {
console.log("TCP server finished transaction #", id);
};

tcpServer.start(44444);

// Connect to the TCP server
var tcpClient = new TcpClient();
tcpClient.onData = (data: string) => {
console.log("Data from TCP client: ", data);
};
tcpClient.onError = (id: number, message: string) => {
console.log("TCP client error for action #", id, ": ", message);
};
tcpClient.onFinished = (id: number) => {
console.log("TCP client finished action #: ", id);
};

// Connect client, action IDs are ommited in this example - see UdpServer
tcpClient.start("localhost", 44444);
tcpClient.send("I am also alive!");

// When we are finished
udpServer.stop();
TcpServer.stop();
TcpClient.stop();

Contributing

Any contributions are welcome, feel free to submit a pull request on GitHub. I would appreciate a PR, which would add support for iOS.

Future Plans

  • support iOS
  • implement a wrapper for future-based interface