GRPC使用篇

/**
 *@作者     caosq
 *@创建日期 2020/11/2 15:07
 *@说明     GRPC 的请求客户端
 */
object GrpcClient {

    val inetSocketAddress by lazy {
        InetSocketAddress(BuildConfig.grpcDomain, BuildConfig.grpcPort)
    }

    // https://grpc.io/docs/platforms/android/java/basics/
    val serviceGrpc by lazy {
        // 同步请求
//        CenterServiceGrpc.newBlockingStub(GrpcClient.grpcBuilder)
        // 异步请求
        val asyncStub = CenterServiceGrpc.newStub(grpcBuilder)
        asyncStub
    }

    // 使用的新线程 用来避开  StrictMode: StrictMode policy violation: android.os.strictmode.NetworkViolation
    val grpcThead by lazy {
        newSingleThreadContext("grpcThread")
    }

    // https://grpc.io/docs/platforms/android/java/basics/
    //    https://stackoverflow.com/questions/63226377/grpc-okhttp-android-client-channel-with-self-signed-ssl-certificate
    // https://developer.android.google.cn/guide/topics/connectivity/grpc
    private val grpcBuilder by lazy {
//        AndroidChannelBuilder.forAddress(inetSocketAddress.hostName, inetSocketAddress.port)
        OkHttpChannelBuilder
            .forAddress(inetSocketAddress.hostName, inetSocketAddress.port)
            .keepAliveTime(10, TimeUnit.SECONDS)
            .keepAliveWithoutCalls(true)
//            .useTransportSecurity()
            .usePlaintext()
            .build()
    }
}

 

posted on 2020-12-30 16:31  caosiqiao  阅读(263)  评论(0编辑  收藏  举报

导航