{"id":23060073,"url":"https://github.com/rodrigosetti/messagepack-rpc","last_synced_at":"2025-08-15T08:31:36.405Z","repository":{"id":19053775,"uuid":"22280066","full_name":"rodrigosetti/messagepack-rpc","owner":"rodrigosetti","description":"Message pack RPC over TCP for Haskell","archived":false,"fork":false,"pushed_at":"2015-11-04T02:25:58.000Z","size":172,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-17T17:53:30.032Z","etag":null,"topics":["haskell","messagepack-format","messagepack-rpc","rpc"],"latest_commit_sha":null,"homepage":"http://hackage.haskell.org/package/messagepack-rpc","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rodrigosetti.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG","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":"2014-07-26T06:29:31.000Z","updated_at":"2020-01-20T03:06:10.000Z","dependencies_parsed_at":"2022-08-05T02:15:13.309Z","dependency_job_id":null,"html_url":"https://github.com/rodrigosetti/messagepack-rpc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodrigosetti%2Fmessagepack-rpc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodrigosetti%2Fmessagepack-rpc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodrigosetti%2Fmessagepack-rpc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodrigosetti%2Fmessagepack-rpc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rodrigosetti","download_url":"https://codeload.github.com/rodrigosetti/messagepack-rpc/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":229901649,"owners_count":18141740,"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":["haskell","messagepack-format","messagepack-rpc","rpc"],"created_at":"2024-12-16T03:11:23.520Z","updated_at":"2024-12-16T03:11:24.067Z","avatar_url":"https://github.com/rodrigosetti.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# messagepack-rpc\n\n[![Build Status](https://travis-ci.org/rodrigosetti/messagepack-rpc.svg?branch=master)](https://travis-ci.org/rodrigosetti/messagepack-rpc)\n\n[Message Pack](http://msgpack.org) RPC over TCP.\n\nRight now this implementation only supports TCP, but the plan is to support multiple transports ( UDP, UNIX domain sockets, _etc._)\n\n## MessagePack-RPC Protocol specification\n\nReference: http://wiki.msgpack.org/display/MSGPACK/RPC+specification\n\nThe protocol consists of \"Request\" message and the corresponding \"Response\" message. The server must send \"Response\" message in reply with the \"Request\" message.\n\n### Request Message\n\nThe request message is a four elements array shown below, packed by MessagePack format.\n\n    [type, msgid, method, params]\n\n#### type\n\nMust be zero (integer). Zero means that this message is the \"Request\" message.\n\n#### msgid\n\nThe 32-bit unsigned integer number. This number is used as a sequence number. The server replies with a requested msgid.\n\n#### method\n\nThe string, which represents the method name.\n\n#### params\n\nThe array of the function arguments. The elements of this array is arbitrary object.\n\n### Response Message\n\nThe response message is a four elements array shown below, packed by MessagePack format.\n\n    [type, msgid, error, result]\n\n#### type\n\nMust be one (integer). One means that this message is the \"Response\" message.\n\n#### msgid\n\nThe 32-bit unsigned integer number. This corresponds to the request message.\n\n#### error\n\nIf the method is executed correctly, this field is Nil. If the error occurred at the server-side, then this field is an arbitrary object which represents the error.\n\n#### result\n\nAn arbitrary object, which represents the returned result of the function. If error occurred, this field should be nil.\n\n### Notification Message (not yet supported)\n\nThe notification message is a three elements array shown below, packed by MessagePack format.\n\n    [type, method, params]\n    \n#### type\n\nMust be two (integer). Two means that this message is the \"Notification\" message.\n\n#### method\n\nThe string, which represents the method name.\n\n#### params\n\nThe array of the function arguments. The elements of this array is arbitrary object.\n\n### The Order of the Response\n\nThe server implementations don't need to send the reply, in the order of the received requests. If they receive the multiple messages, they can reply in random order.\n\nThis is required for the pipelining. At the server side, some functions are fast, and some are not. If the server must reply with in order, the slow functions delay the other replies even if it's execution is already completed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodrigosetti%2Fmessagepack-rpc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodrigosetti%2Fmessagepack-rpc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodrigosetti%2Fmessagepack-rpc/lists"}