{"id":18731511,"url":"https://github.com/keegancsmith/rpc","last_synced_at":"2025-04-09T09:09:25.787Z","repository":{"id":52470212,"uuid":"118963455","full_name":"keegancsmith/rpc","owner":"keegancsmith","description":"Go stdlib net/rpc with context.Context support","archived":false,"fork":false,"pushed_at":"2022-12-19T06:46:24.000Z","size":27,"stargazers_count":37,"open_issues_count":0,"forks_count":19,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-02T07:09:27.465Z","etag":null,"topics":["go","golang","rpc"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/keegancsmith.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-25T20:21:51.000Z","updated_at":"2024-02-19T09:53:25.000Z","dependencies_parsed_at":"2023-01-29T20:40:12.656Z","dependency_job_id":null,"html_url":"https://github.com/keegancsmith/rpc","commit_stats":null,"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keegancsmith%2Frpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keegancsmith%2Frpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keegancsmith%2Frpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/keegancsmith%2Frpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/keegancsmith","download_url":"https://codeload.github.com/keegancsmith/rpc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248008630,"owners_count":21032556,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","rpc"],"created_at":"2024-11-07T14:58:40.508Z","updated_at":"2025-04-09T09:09:25.757Z","avatar_url":"https://github.com/keegancsmith.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# rpc  [![Build Status](https://travis-ci.org/keegancsmith/rpc.svg?branch=master)](https://travis-ci.org/keegancsmith/rpc)\n\nThis is a fork of the stdlib [net/rpc](https://golang.org/pkg/net/rpc/) which\nis frozen. It adds support for `context.Context` on the client and server,\nincluding propagating cancellation.\n\nThe API is exactly the same, except `Client.Call` takes a `context.Context`,\nand Server methods are expected to take a `context.Context` as the first\nargument. Additionally the wire protocol is unchanged, so is backwards\ncompatible with `net/rpc` clients.\n\n`DialHTTPPathTimeout` function is also added. A future release of rpc may\nupdate all Dial functions to instead take a context.\n\n`ClientTrace` functionality is also added. This is for hooking into the rpc\nclient to enable tracing.\n\n## Why use net/rpc\n\nThere are many alternatives for RPC in Go, the most popular being\n[GRPC](https://grpc.io/). However, `net/rpc` has the following nice\nproperties:\n\n- Nice API\n- No need for IDL\n- Good performance\n\nThe nice API is subjective. However, the API is small, simple and composable.\nwhich makes it quite powerful. IDL tools are things like GRPC requiring protoc\nto generate go code from the protobuf files. `net/rpc` has no third party\ndependencies nor code generation step, simplify the use of it. A benchmark\ndone on the [6 Sep\n2016](https://github.com/golang/go/issues/16844#issuecomment-245261755)\nindicated `net/rpc` was 4x faster than GRPC. This is an outdated benchmark,\nbut is an indication at the surprisingly good performance `net/rpc` provides.\n\nFor more discussion on the pros and cons of `net/rpc` see the issue [proposal:\nfreeze net/rpc](https://github.com/golang/go/issues/16844).\n\n## Details\n\nLast forked from commit\n[bfadd78986](https://github.com/golang/go/commit/bfadd78986) on 7 September\n2022.\n\nCancellation implemented via the rpc call `_goRPC_.Cancel`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeegancsmith%2Frpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkeegancsmith%2Frpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkeegancsmith%2Frpc/lists"}