nimrpc

RPC implementation for Nim based on msgpack4nim

Pure Nim score 15/100 · tests present · no docs generated

Summary

Latest Version Unknown
License MIT
CI Status Failing
Downloads 0
Last Indexed 2026-07-21 05:24

Installation

nimble install nimrpc
choosenim install nimrpc
git clone https://github.com/rogercloud/nim-rpc

OS Compatibility

Platform Linux macOS Windows FreeBSD OpenBSD NetBSD Android iOS WASM Embedded
nimrpc - - - - - - -

Source

Repository https://github.com/rogercloud/nim-rpc
Homepage https://github.com/rogercloud/nim-rpc
Registry Source nimble_official

README

nim-rpc

Build Status

RPC implementation for Nim based on msgpack4nim created by @jangko.

Install

Pre Requirement

Nimble package manager installed

Install Command

nimble install nimrpc

Example

RPC Server

import nimrpc/rpc_server, nimrpc/rpc_type, asyncnet, asyncdispatch, msgpack

# Define your remote proc
# Remote porc must have two params, first is input, second is output (so it's var param).
# Return value must be an int as error code, for example, 0 for success, -1 for error.
proc remoteAdd(param: tuple[v1: int, v2: int], ret: var int): int =
  ret = param.v1 + param.v2
  result = 0

# Create the server
# Currently procs must be resgistered before rpc server starts running.
# Running time proc register will be added in later version
var server = newRpcServer("127.0.0.1", Port(4343)) # server listen to 127.0.0.1:4343
server.register("add", remoteAdd) # register remoteAdd to RPC server binding name "add"
asyncCheck server.run() # run RPC server
runForever()

RPC Client

```nimrod import nimrpc/rpc_client, nimrpc/rpc_type, net, asyncdispatch

proc main = var client = newRpcClient("127.0.0.1", Port(4343)) # client send request to 127.0.0.1:4343 var ret: int var state = client.call("add", (1, 2), ret) # client remote call add

# Check remote call state first, only process ret value when state == Correct if state == Correct: echo($state) # output: Correct echo($ret) # output: 3 else: echo($state)

if isMainModule == true: main() ```

RPC Async Client

Due to nim compiler bug, async client is not supported currently. It will be added in later version once the bug gets fixed.