The following transport protocols are available on Rootstock: - [HTTP Transport Protocol](#http-transport-protocol) - [Websockets Transport Protocol](#websockets-transport-protocol) ## HTTP transport protocol HTTP requests should be made: - to the port number specified in the config for `rpc.providers.web.http.port` - this is `4444` by default - for [public nodes](/node-operators/public-nodes/), omit the port number - to the "root" route (`/`) - using the HTTP verb `POST` - specifying a `Content-Type` header of `application/json` - with a request body specified as stringified JSON For example, a `curl` command to a `localhost` Rootstock node would look similar to this: ```shell curl http://localhost:4444/ \ \ -X POST \ -H "Content-Type: application/json" \ --data '{"jsonrpc":"2.0","method":"RPC_METHOD_NAME","params":[RPC_REQUEST_PARAMETERS],"id":1}' ``` ## WebSockets transport protocol WebSockets connections should be established: - to the port number specified in the config for `rpc.providers.web.ws.port` - this is `4445` by default - [public nodes](/node-operators/public-nodes/) do **not** have the WebSockets transport protocol enabled - to the WebSockets route (`/websocket`) Once connected: - Send a request body specified as stringified JSON - No "verb" or "headers" are necessary, as these are specific to the HTTP transport protocol For example, a `wscat` command to connect to a `localhost` Rootstock node would look similar to this: ```shell wscat -c ws://localhost:4445/websocket ``` After the connection has been established using `wscat`, you may send multiple RPC requests within the same session. (Note that `> ` marks requests to be input, and that `< ` marks responses that will be printed.) ```json {"jsonrpc":"2.0","method":"RPC_METHOD_NAME","params":[RPC_REQUEST_PARAMETERS],"id":1} {"jsonrpc":"2.0","id":1,"result":"RPC_RESPONSE"} {"jsonrpc":"2.0","method":"RPC_METHOD_NAME","params":[RPC_REQUEST_PARAMETERS],"id":2} {"jsonrpc":"2.0","id":2,"result":"RPC_RESPONSE"} ```