Programming language: Crystal
Tags: Network Protocols    
Latest version: v0.1.0

gopher.cr alternatives and similar shards

Based on the "Network Protocols" category

Do you think we are missing an alternative of gopher.cr or a related project?

Add another 'Network Protocols' Shard


gopher.cr Build Status

An implementation of RFC 1437, the Gopher protocol.

This repository is 2 things:

  1. A library that implements the Gopher protocol
  2. An example server that serves Gopher requests

Gopher Protocol

The Gopher protocol consists of 2 phases: request & response.

Like its relative HTTP, clients makes a request for a URI to the server, and the server responds. Unlike HTTP, however, there are no headers, caching, MIME response types, keepalives, etc. This makes the protocol both simpler and less featureful.


A request to a gopher:// server consists of a single line, containing a URI (called a selector):


the server then resolves that request into a response, and renders it back to the client.


A Response can be one of 3 things:

  • a menu of further choices a user can make
  • a resource (a file, or a another server)
  • an error

A copy of the RFC that describes the protocol is [included in this repo][rfc]

Using this library

To use this library, you need to:

  1. Create a Server object
  2. Provide it with Resolver(s) that instruct it how to find content
  3. Tell the server to listen for requests!

A good example for how this can be done exists in src/example.cr

If you're looking for a more turnkey solution, check out its sister project Port70.


Testing on the application is built using the excellent minitest.cr.

Run tests with crystal spec.