Android library listening network connection state and change of the WiFi signal strength with event bus

Overview

NetworkEvents

Travis CI Android Arsenal Maven Central

Android library listening network connection state and change of the WiFi signal strength with event bus.

It works with any implementation of the Event Bus. In this repository you can find samples with Otto and GreenRobot's bus.

min sdk version = 9

JavaDoc is available at: http://pwittchen.github.io/NetworkEvents

This project is deprecated!

This library is now deprecated and no longer maintained in favor of the following libraries, which do the same job, but in the better way:

Contents

Overview

Library is able to detect ConnectivityStatus when it changes.

public enum ConnectivityStatus {
  UNKNOWN("unknown"),
  WIFI_CONNECTED("connected to WiFi"),
  WIFI_CONNECTED_HAS_INTERNET("connected to WiFi (Internet available)"),
  WIFI_CONNECTED_HAS_NO_INTERNET("connected to WiFi (Internet not available)"),
  MOBILE_CONNECTED("connected to mobile network"),
  OFFLINE("offline");
  ...
}    

In addition, it is able to detect situation when strength of the Wifi signal was changed with WifiSignalStrengthChanged event, when we enable WiFi scanning.

Library is able to detect MobileNetworkType when ConnectivityStatus changes to MOBILE_CONNECTED.

public enum MobileNetworkType {
  UNKNOWN("unknown"),
  LTE("LTE"),
  HSPAP("HSPAP"),
  EDGE("EDGE"),
  GPRS("GPRS");
  ...
}    

Usage

Appropriate permissions are already set in AndroidManifest.xml file for the library inside the <manifest> tag. They don't need to be set inside the specific application, which uses library.

Initialize objects

In your activity add BusWrapper field, which wraps your Event Bus. You can use Otto as in this sample and then create NetworkEvents field.

private BusWrapper busWrapper;
private NetworkEvents networkEvents;

Create implementation of BusWrapper. You can use any event bus here. E.g. GreenRobot's Event Bus. In this example, we are wrapping Otto Event bus.

private BusWrapper getOttoBusWrapper(final Bus bus) {
  return new BusWrapper() {
    @Override public void register(Object object) {
      bus.register(object);
    }

    @Override public void unregister(Object object) {
      bus.unregister(object);
    }

    @Override public void post(Object event) {
      bus.post(event);
    }
  };
}

Initialize objects in onCreate(Bundle savedInstanceState) method.

@Override protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  busWrapper = getOttoBusWrapper(new Bus());
  networkEvents = new NetworkEvents(context, busWrapper);
}

Please note: Due to memory leak in WifiManager reported in issue 43945 in Android issue tracker it's recommended to use Application Context instead of Activity Context.

NetworkEvents Customization

Custom logger

By default library logs messages about changed connectivity or WiFi signal strength to LogCat. We can create custom logger implementation in the following way:

networkEvents = new NetworkEvents(context, busWrapper, new Logger() {
  @Override public void log(String message) {
    // log your message here
  }
});

If we don't want to log anything, we can simply create empty implementation of the Logger interface, when log(message) method doesn't do anything.

enabling WiFi scan

WiFi Access Points scanning is disabled by default. If Wifi Access Points Scan is not enabled, WifiSignalStrengthChanged event will never occur. You can enable it as follows:

networkEvents = new NetworkEvents(context, busWrapper)
  .enableWifiScan();
enabling Internet connection check

Internet connection check is disabled by default. If Internet check is disabled, status WIFI_CONNECTED_HAS_INTERNET and WIFI_CONNECTED_HAS_NO_INTERNET won't be set. If internet check is enabled WIFI_CONNECTED status will never occur (from version 2.1.0). The only statuses, which may occur after connecting to WiFi after enabling this option are WIFI_CONNECTED_HAS_INTERNET and WIFI_CONNECTED_HAS_NO_INTERNET.

You can enable internet check as follows:

networkEvents = new NetworkEvents(context, busWrapper)
  .enableInternetCheck();
customizing ping parameters

You can customize ping parameters used to check Internet connectivity. You can set your own host, port and ping timeout in milliseconds as follows:

networkEvents = new NetworkEvents(context, busWrapper)
  .setPingParameters("www.anyhostyouwant.com", 80, 30)

In the example presented above, library will ping www.anyhostyouwant.com on port 80 with timeout equal to 30 milliseconds.

Register and unregister objects

We have to register and unregister objects in Activity Lifecycle.

In case of different Event Buses, we have to do it differently.

Otto Bus

Register BusWrapper and NetworkEvents in onResume() method and unregister them in onPause() method.

@Override protected void onResume() {
  super.onResume();
  busWrapper.register(this);
  networkEvents.register();
}

@Override protected void onPause() {
  super.onPause();
  busWrapper.unregister(this);
  networkEvents.unregister();
}

GreenRobot's Bus

Register BusWrapper and NetworkEvents in onStart() method and unregister them in onStop() method.

@Override protected void onStart() {
  super.onStart();
  busWrapper.register(this);
  networkEvents.register();
}

@Override protected void onStop() {
  busWrapper.unregister(this);
  networkEvents.unregister();
  super.onStop();
}

Subscribe for the events

For Otto Event Bus @Subscribe annotations are required, but we don't have to use them in case of using library with GreenRobot's Event Bus.

@Subscribe public void onEvent(ConnectivityChanged event) {
  // get connectivity status from event.getConnectivityStatus()
  // or mobile network type via event.getMobileNetworkType()
  // and do whatever you want
}

@Subscribe public void onEvent(WifiSignalStrengthChanged event) {
  // do whatever you want - e.g. read fresh list of access points
  // via event.getWifiScanResults() method
}

NetworkHelper

Library has additional class called NetworkHelper with static method, which can be used for determining if device is connected to WiFi or mobile network:

NetworkHelper.isConnectedToWiFiOrMobileNetwork(context)

It returns true if device is connected to one of mentioned networks and false if not.

Examples

  • Look at MainActivity in application located in example directory to see how this library works with Otto Event Bus.
  • Example presenting how to use this library with GreenRobot's Event Bus is presented in example-greenrobot-bus directory

Download

You can depend on the library through Maven:

<dependency>
  <groupId>com.github.pwittchen</groupId>
  <artifactId>networkevents</artifactId>
  <version>2.1.6</version>
</dependency>

or through Gradle:

dependencies {
  compile 'com.github.pwittchen:networkevents:2.1.6'
}

Remember to add dependency to the Event Bus, which you are using.

In case of Otto, add the following dependency through Maven:

<dependency>
  <groupId>com.squareup</groupId>
  <artifactId>otto</artifactId>
  <version>1.3.8</version>
</dependency>

or through Gradle:

dependencies {
  compile 'com.squareup:otto:1.3.8'
}

You can also use GreenRobot's Event Bus or any Event Bus you want.

Tests

Tests are available in network-events-library/src/androidTest/java/ directory and can be executed on emulator or Android device from Android Studio or CLI with the following command:

./gradlew connectedCheck

Test coverage report can be generated with the following command:

./gradlew createDebugCoverageReport

In order to generate report, emulator or Android device needs to be connected to the computer. Report will be generated in the network-events-library/build/outputs/reports/coverage/debug/ directory.

Code style

Code style used in the project is called SquareAndroid from Java Code Styles repository by Square available at: https://github.com/square/java-code-styles.

Who is using this library?

Are you using this library in your app and want to be listed here? Send me a Pull Request or an e-mail to [email protected]

License

Copyright 2015 Piotr Wittchen

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • OnlineCheckerImpl does not check for internet connectivity

    OnlineCheckerImpl does not check for internet connectivity

    The OnlineCheckerImpl only checks if there is a network connection available (packets can be sent) but not whether it is connected to the greater internet.

    As described in this stackoverflow: http://stackoverflow.com/questions/6493517/detect-if-android-device-has-internet-connection

    A decent way to do this would be checking if a host is reachable with a small timeout at a regular interval: http://stackoverflow.com/questions/8919083/checking-host-reachability-availability-in-android

    enhancement 
    opened by lingz 6
  • Add abstraction, which will allow to add any event bus implementation

    Add abstraction, which will allow to add any event bus implementation

    I need an interface, which will look like that:

    interface EventPublisher {
       void post(Object event);
    }
    

    I also need to add possibility to set implementation of this interface in NetworkEvents object via second constructor. This feature should be optional. I can leave Otto event bus as a default implementation, when user hasn't defined his own bus implementation. Moreover, I can add some example with a different event bus (e.g. https://github.com/greenrobot/EventBus as it's quite popular).

    enhancement 
    opened by pwittchen 6
  • isConnectedToAnyNetwork

    isConnectedToAnyNetwork

    Hi,

    It seems that a class called "NetworkHelper" existed in previous versions with a method "isConnectedToAnyNetwork" but now that this class has been removed I can't see where this method has been added or replaced, could someone help me?

    Thank you !

    enhancement question 
    opened by Martin-Hogge 5
  • Subscribe for the events must in the implement class instead of super class

    Subscribe for the events must in the implement class instead of super class

    My project is used this nice library. I have a chain of activity: MainActivity extends BaseActivity, BaseActivity extends MintBaseActivity, MintBaseActivity extends XActivity, XActivity extends AppCompatActivity. They are all abstract class except MainActivity and AppCompatActivity. I found a interesting PROBLEM(maybe i make a mistake) when used otto as event bus.

    @Subscribe
    public void onEvent(ConnectivityChanged event) {
        // get connectivity status from event.getConnectivityStatus()
        // or mobile network type via event.getMobileNetworkType()
        // and do whatever you want
    }
    

    The method below must be in finally implement class instead of super class whether is a abstract class.

    Here is my TestRepo --- TestNetEventLibrary. You can take a look.

    I guess it is the Otto's feature and I'v not read the Otto source. What about your opinion? Thanks in advance!

    opened by johnwatsondev 5
  • Discuss about OnlineCheckerImpl 's isOnline(context) method

    Discuss about OnlineCheckerImpl 's isOnline(context) method

    Why use isConnectedOrConnecting() rather than isConnected() ?

    For isConnectedOrConnecting method's javadoc: Indicates whether network connectivity exists or is in the process of being established. This is good for applications that need to do anything related to the network other than read or write data. For the latter, call isConnected() instead, which guarantees that the network is fully usable.

    Thanks for refactor code again and i have used this nice library in my productive project. Thanks in advance!

    opened by johnwatsondev 5
  • Get mobile network type for ConnectivityManager.TYPE_MOBILE

    Get mobile network type for ConnectivityManager.TYPE_MOBILE

    Some network operations are limited for mobile edge network. Can you add mobile network types to connection status? You can get mobile network types with TelephonyManager class.

    TelephonyManager tm =
                    (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    if (activeNetwork.getType() == ConnectivityManager.TYPE_MOBILE) {
                    switch (tm.getNetworkType()) {
                        case (TelephonyManager.NETWORK_TYPE_LTE |
                                TelephonyManager.NETWORK_TYPE_HSPAP):
                            Log.i("mobile-network-type "," 3g mobile type");
                            return TYPE_MOBILE_HSPAP;
                        case (TelephonyManager.NETWORK_TYPE_EDGE |
                                TelephonyManager.NETWORK_TYPE_GPRS):
                            Log.i("mobile-network-type "," edge mobile type");
                            return TYPE_MOBILE_EDGE;
                        default:
                            Log.i("mobile-network-type","unknown mobile type");
                            return TYPE_UNKNOWN;
                    }
                }
    
    opened by suleymanccelik 4
  • Memory leak in WiFiManager from Android SDK

    Memory leak in WiFiManager from Android SDK

    • Instantiation of WifiManager should use Application level Context instead of Activity level in NetworkEvents.java. Otherwise it will occur leak in WifiManager. The reference tree was attached below from leakcanary. This leak was reported in Issue 43945 from android issues.
    GC ROOT com.android.internal.util.AsyncChannel$DeathMonitor.this$0
    references com.android.internal.util.AsyncChannel.mSrcContext
    leaks com.test.demo.SplashActivity instance
    

    Fix code in NetworkEvents.java:

    public void register() {
        registerNetworkConnectionChangeReceiver();
        registerInternetConnectionChangeReceiver();
    
        if (wifiAccessPointsScanEnabled) {
          registerWifiSignalStrengthChangeReceiver();
          // start WiFi scan in order to refresh access point list
          // if this won't be called WifiSignalStrengthChanged may never occur
    -     WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    +     WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
          wifiManager.startScan();
        }
      }
    

    • ConnectivityManager can also leak Activity.

    leakcanary dump heap info:

    //GC ROOT static android.net.ConnectivityManager.sInstance
    //references android.net.ConnectivityManager.mContext
    //leaks com.test.demo.SplashActivity instance
    

    Fix code in NetworkConnectionChangeReceiver:

      private ConnectivityStatus getConnectivityStatus(Context context) {
    -   ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    +   ConnectivityManager connectivityManager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
    
        if (networkInfo != null) {
          if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
            return ConnectivityStatus.WIFI_CONNECTED;
          } else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
            return ConnectivityStatus.MOBILE_CONNECTED;
          }
        }
    
        return ConnectivityStatus.OFFLINE;
      }
    

    • There was an odd behave about those leaks. Because WifiManager and ConnectivityManager were created in so many different places in your codebase. Why just has these two places leak?

    Looking forward to your reply. Thanks in advance. :)

    bug 
    opened by johnwatsondev 3
  • Where is the withPingUrl(...)?

    Where is the withPingUrl(...)?

    I have the old version of this Project and i use this declaration of object:

    networkEvents = new NetworkEvents(this, bus)
                    .withPingUrl(urlJsonObj)
                    .withPingTimeout(5000);
    

    And I Update today the project and much things are missing.. I use that configuration to now if the server are connected and received a ping... But in this update this function are delete WHY ? Is another way to still use this..?

    question 
    opened by Gamis214 3
  • Release v. 2.1.0

    Release v. 2.1.0

    Initial release notes:

    • bumped version of gradle build tools to 1.3.0
    • disabled WIFI_CONNECTED status when enableInternetCheck() method is called. Read more about this change in appropriate section of README.md file.
    release process 
    opened by pwittchen 3
  • Periodically ping (polling) the server

    Periodically ping (polling) the server

    Not only at startup, but during the application? for example after 10 minutes we lose the connection to the Internet but WIFI is connected(connected is a WiFi (internet not available)).

    Is the library is able to detect that situation? Is polls the server at intervals of time?

    enhancement question wontfix 
    opened by kamilwlf 3
  • Is it possible to add  getInternetConnectionStatus() and getSignalStrength()?

    Is it possible to add getInternetConnectionStatus() and getSignalStrength()?

    Can you add: ConnectivityStatus getInternetConnectionStatus() and getSignalStrengthChanged()?

    sure, I can save the status(e.q in database), but I prefer to do it on library level

    question 
    opened by kamilwlf 3
Releases(v2.1.6)
  • v2.1.6(Jul 18, 2016)

  • v2.1.5(Jul 18, 2016)

  • v2.1.4(Jul 16, 2016)

    • changed implementation of the OnlineChecker in OnlineCheckerImpl class. Now it pings remote host.
    • added android.permission.INTERNET to AndroidManifest.xml
    • added back NetworkHelper class with static method boolean isConnectedToWiFiOrMobileNetwork(context)
    • updated sample apps
    Source code(tar.gz)
    Source code(zip)
  • v2.1.3(Jan 10, 2016)

    • Due to memory leak in WifiManager reported in issue 43945 in Android issue tracker replaced Activity Context with Application Context in sample apps and added appropriate note in README.md
    • added ACCESS_COARSE_LOCATION permission to AndroidManifest.xml to be able to scan WiFi access points on Android 6
    Source code(tar.gz)
    Source code(zip)
  • v2.1.2(Oct 4, 2015)

    • bumped target SDK version to 23
    • bumped buildToolsVersion to 23.0.1
    • removed CHANGE_NETWORK_STATE and INTERNET permissions from AndroidManifest.xml, because they're no longer required
    Source code(tar.gz)
    Source code(zip)
  • v2.1.1(Sep 13, 2015)

    • updated InternetConnectionChangeReceiver class and its API
    • fixed failing unit tests
    • all changes were provided in a single commit https://github.com/pwittchen/NetworkEvents/commit/2f6999c5cd45ba220f615580e64bfee9e6cc8089
    Source code(tar.gz)
    Source code(zip)
  • v2.1.0(Sep 13, 2015)

  • v2.0.1(Aug 9, 2015)

  • v2.0.0(Jul 31, 2015)

    • removed withPingUrl(url) method
    • removed withPingTimeout() method
    • removed withoutPing() method
    • removed withoutWifiAccessPointsScan() method
    • removed Otto dependency (now, it's available only for unit tests)
    • removed example-disabling-ping-and-wifi-scan app sample
    • removed example-ping-customization app sample
    • removed NetworkHelper class and moved its method to specific classes with changed scope
    • moved permissions to Manifest of library
    • disabled WiFi scan by default
    • disabled Internet connection check by default
    • added BusWrapper, which is abstraction for Event Bus required by NetworkEvents object
    • added example-greenrobot-bus app sample
    • added enableWifiScan() method
    • added enableInternetCheck() method
    • added getWifiScanResults() method in WifiSignalStrengthChanged event
    • added getMobileNetworkType() method in ConnectivityChanged event
    • added JavaDoc at: http://pwittchen.github.io/NetworkEvents/
    • updated existing sample applications
    • updated documentation in README.md and library code
    Source code(tar.gz)
    Source code(zip)
  • v1.0.5(May 13, 2015)

    In this version, we can customize NetworkEvents object. E.g. we can set our own ping url and ping timeout:

    networkEvents = new NetworkEvents(this, bus)
            .withPingUrl("http://www.android.com")
            .withPingTimeout(50 * 1000);
    

    We can also disable ping or Wifi Access Points Scan:

    networkEvents = new NetworkEvents(this, bus)
            .withoutPing()
            .withoutWifiAccessPointsScan();
    

    In the main repository, we can find new examples of applications showing how to use these methods. In addition, internal elements of code (especially NetworkEvents class) were updated and new unit tests were created.

    Source code(tar.gz)
    Source code(zip)
  • v1.0.4(Mar 21, 2015)

    • migrated unit tests to AndroidJUnit4 runner
    • added Google Truth assertions for unit tests
    • added Mockito library for creating mocks in unit tests
    • fixed bug with EOFException in HttpURLConnection in ping method inside NetworkHelper class
    • refactored code to make it more testable and loosely coupled
    Source code(tar.gz)
    Source code(zip)
  • v1.0.3(Mar 7, 2015)

    • updated ping method in NetworkHelper class to more reliable
    • added unit tests
    • refactored code due to unit tests
    • added missing comments with license
    • updated Android Build Tools to 1.1.0
    • removed unused getWifiInfo() method from NetworkHelper class
    • updated travis.yml file for CI
    • left public API unchanged
    Source code(tar.gz)
    Source code(zip)
  • v1.0.2(Feb 14, 2015)

    • improved ping method in NetworkHelper class
    • detection of Internet access in WiFi network works faster and is more reliable
    • added example of usage of the library with Dagger
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Jan 31, 2015)

    • added support for API 9 (Android 2.3 GINGERBREAD) and above
    • increased code immutability
    • removed dependency to unused appcompat library
    • performed small code refactoring and reformatting
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jan 30, 2015)

    First version of the library is available in Maven Central Repository. It supports API 15 (Android 4.0.3 - ICE_CREAM_SANDWICH_MR1) and above.

    Library has the following features:

    • listening connection state (WiFi, WiFi with Internet access, mobile network, off-line)
    • listening change of the WiFi signal strength
    • informing about the network events via Otto Event Bus

    The following bug was fixed:

    • Pushing several events twice to the bus when event occurred once
    Source code(tar.gz)
    Source code(zip)
Owner
Piotr Wittchen
yet another coder
Piotr Wittchen
Tiny app to change Wi-Fi state via broadcast

WyFy Wi-Fi change state adapter. Tiny app to change Wi-Fi state via broadcast. Useful to bypass Google limitation on apps targeting API 29 and higher.

lucky 7 Aug 21, 2022
A small Android project to practice executing network requests and parsing the network response

InspirationalQuotesExercise A small Android project to practice executing network requests and parsing the network response This app uses the ZenQuote

Caren 0 Oct 13, 2021
Light library to check internet connection in android apps easily.

check-internet-android Light library to check internet connection in android apps easily. It checks real internet connection by connecting to Google's

Raheem 7 Nov 15, 2022
SimpleApiCalls is a type-safe REST client for Android. The library provides the ability to interact with APIs and send network requests with HttpURLConnection.

SimpleApiCalls ?? SimpleApiCalls is a type-safe REST client for Android. The library provides the ability to interact with APIs and send network reque

null 4 Nov 28, 2022
Android network client based on Cronet. This library let you easily use QUIC protocol in your Android projects

Android network client based on Cronet. This library let you easily use QUIC protocol in your Android projects

VK.com 104 Dec 12, 2022
A library that observes your network status.

A library that observes your network status. Update in progress ... Download Using gradle In your root build.gradle at the end of repositories add all

Moses Wangira 9 Apr 18, 2022
Compact and easy to use, 'all-in-one' android network solution

Deprecated Unfortunately due to many reasons including maintenance cost, this library is deprecated. I recommend to use Retrofit/OkHttp instead. Curre

Orhan Obut 585 Dec 30, 2022
Write your asynchronous Network / IO call painlessly in Kotlin !!

Asynkio : Write asynced IO/ Network calls painlessly on android | | | Documentation Write your network requests, IO calls in android with Kotlin seaml

Nikhil Chaudhari 82 Jan 26, 2022
Sandwich was invented for constructing the standardized response interface from the network response

?? A lightweight and standardized Android network response interface for handling successful data and error responses.

Jaewoong Eum 973 Jan 5, 2023
Operations are performed by calling api endpoints over the network

##About The app Operations are performed by calling api endpoints over the network. Local data is in effect immutable, the client just downloads updat

Marc Daniel Registre 1 Oct 22, 2021
Cli lightning network server, based on LDK (rust-lightning). Provides DUMB-RPC interface (telnet friendly).

Hello Lightning Cli lightning network server, based on LDK (rust-lightning). Provides DUMB-RPC interface (telnet friendly). Example: Build it run it:

null 9 Mar 28, 2022
Asynchronous socket, http(s) (client+server) and websocket library for android. Based on nio, not threads.

AndroidAsync AndroidAsync is a low level network protocol library. If you are looking for an easy to use, higher level, Android aware, http request li

Koushik Dutta 7.3k Jan 2, 2023
Flower - Super cool Android library to manage networking and database caching with ease

Flower Super cool Android library to manage networking and database caching with ease. It allows developers to use remote resources on-the-fly OR Comb

Rajesh Hadiya 192 Dec 26, 2022
Volley is an HTTP library that makes networking for Android apps easier and, most importantly, faster.

Volley Volley is an HTTP library that makes networking for Android apps easier and, most importantly, faster. For more information about Volley and ho

Google 3.3k Jan 1, 2023
Asynchronous Http and WebSocket Client library for Java

Async Http Client Follow @AsyncHttpClient on Twitter. The AsyncHttpClient (AHC) library allows Java applications to easily execute HTTP requests and a

AsyncHttpClient 6k Jan 8, 2023
HttpMocker is a simple HTTP mocking library written in Kotlin to quickly and easily handle offline modes in your apps

HttpMocker HttpMocker is a very lightweight Kotlin library that allows to mock HTTP calls relying on either OkHttp or the Ktor client libraries. It ca

David Blanc 174 Nov 28, 2022
An RPC library for Kotlin services that strives to balance developer productivity and performance.

IndieRpc An RPC library for Kotlin services that strives to balance developer productivity and performance. IndieRpc is inspired by Golang's net/rpc p

Asad Awadia 3 Nov 30, 2021
gRPC-Kotlin/JVM - An RPC library and framework

gRPC-Kotlin/JVM - An RPC library and framework A Kotlin/JVM implementation of gRPC: A high performance, open source, general RPC framework that puts m

null 2 Nov 25, 2021