NKN SDK: powering client side communication without servers
Tags: javascript, security, webdev, blockchain
Published: 2020-03-25 17:31:01

![NKN GitHub SDK](https://blog.nkn.org/wp-content/uploads/2020/03/NKN-Github-scaled.jpg)

What can developers do with NKN’s latest SDK, a decentralized communication stack that enables true peer to peer messaging, streaming, and file transfer? We would like to sort them into two main categories:

*   Things you can do **<span style="text-decoration:underline;"><span style="text-decoration:underline;">ONLY</span>** with NKN SDK.
    1. Send and receive data for free between any NKN powered apps regardless of their network condition without setting up a server or relying on any third party services.
    2. Network agnostic: Neither sender nor receiver needs to have public IP address or port forwarding. NKN powered apps only establish outbound (websocket) connections, so Internet access is all they need. This is ideal for client side peer to peer communication.

*   Things you can do **<span style="text-decoration:underline;"><span style="text-decoration:underline;">BETTER</span>** with NKN SDK
    1. Top level security: All data are end to end authenticated and encrypted. No one else in the world except sender and receiver can see or modify the content of the data. The same public key is used for both routing and encryption, eliminating the possibility of man in the middle attack.
    2. Decent performance: By aggregating multiple overlay paths concurrently, NKN  powered apps can get ~100ms end to end latency and 10+mbps end to end session throughput between most international locations. This might sound modest, but it is actually faster than most file transfer services (e.g. instant messenger, gmail/google-drive, wetransfer.com, or dropbox)
    3. Everything is free, open source and decentralized.

NKN recently combined three Javascript SDKs (client, multi-client and wallet) into a single one, and added several important new features that developers will love. 

*   [NKN Client](https://github.com/nknorg/nkn-sdk-js#client): Send and receive data for free between any NKN clients regardless their network condition without setting up a server or relying on any third party services. Data are end to end encrypted by default. Typically you might want to use [multiclient](https://github.com/nknorg/nkn-sdk-js#multiclient) instead of using client directly.
*   [NKN MultiClient](https://github.com/nknorg/nkn-sdk-js#multiclient): Send and receive data using multiple NKN clients concurrently to improve reliability and latency. In addition, it supports session mode, a reliable streaming protocol similar to TCP based on [ncp](https://github.com/nknorg/ncp-js).
*   [NKN Wallet](https://github.com/nknorg/nkn-sdk-js#wallet): Wallet SDK for [NKN blockchain](https://github.com/nknorg/nkn). It can be used to create wallet, transfer token to NKN wallet address, register name, subscribe to topic, etc.

Several example applications that are built on NKN SDK are:

*   nMobile: a secure mobile wallet and chat application.
    *   [More information](https://nmobile.nkn.org)
    *   [Google Play Store download](https://play.google.com/store/apps/details?id=org.nkn.mobile.app)
*   D-Chat: a decentralized chat as Chrome/Firefox browser extension.
    *   [More information](https://forum.nkn.org/t/d-chat/1036)
    *   [Gitlab](https://gitlab.com/losnappas/d-chat)
*   nFTP: a high throughput and direct file transfer between any clients
    *   [More information](https://forum.nkn.org/t/nkn-d-ftp-high-throughput-file-transfer-using-nkn-client/1711)
    *   [Experience web app](https://nftp.nkn.org)
    *   [GitHub](https://github.com/nknorg/nkn-file-transfer)

So if your application needs these unique communication capabilities of NKN, would like to simplify and get rid of the servers, or simply to reduce server costs, you can head to NKN’s Developer Portal as well as our github repository to get started:

[https://www.nkn.org/developer/](https://www.nkn.org/developer/)

[https://github.com/nknorg/nkn-sdk-js](https://github.com/nknorg/nkn-sdk-js)