1
0
Created for the UW iSchool Workshop
This repository has been archived on 2023-12-27. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Tony Grosinger a1e0fb3b7e
Add smudge dependency to vendor
Smudge provides an implementation of the gossip protocol that will be
used for communicating with other chat client implementations.

Retrieved at: d39c17654b
2017-10-19 19:44:45 -07:00
vendor/github.com/clockworksoul/smudge Add smudge dependency to vendor 2017-10-19 19:44:45 -07:00
LICENSE Initial commit 2017-10-19 19:28:23 -07:00
README.md Beginnings of the README.md 2017-10-19 19:41:41 -07:00

Beginning Go - A Chat Client

Welcome! This repository contains the template for a gossip-based chat client which is designed to be an introduction project for programmers looking to learn more about the Go programming language. This file will guide you from getting started all the way to connecting to other chat clients.

What Makes this Chat Client Special

Other than you writing it?

By using the gossip protocol, this chat system is 100% decentralized. As long as one client remains active, the chat history will be maintained. To join the chat room a client needs only enter the connection information for any other connected client.

Once connected, the gossip library we are using will tell other clients that you have connected. In addition to now showing up in their list of connected users, your client will now be able to periodically poll for new messages, receive pushed messages, and push its own messages.

Currently the gossip library we are using is limited to LAN connections only.

Creating the Chat Client

Assumptions

If you are following along with this exercise during the class at UW, you are likely working on a Windows computer with Go already installed. Go is a statically typed and compiled language that can create executables for many different operating systems and architectures. This means code written for one operating system will work just as well on another. You can even cross-compile (create Windows executables from Linux, for example).

If you do not already have Go installed, please follow the installation instructions.

Obtaining the Source

To fit within the time limits of the class, and to ensure everyone writes compatible chat clients, a template client has been created for you to complete. You can obtain it either by cloning the git repository, or just by downloading a zip of the files.

Download the files

Building and Running

Let's see where the code has gotten us started. After taking a quick look through main.go (or before if you want), run the following set of commands to build and execute the beginnings of your chat client implementation.

Fill out instructions here

Run the Unit Tests

Fill in the Blanks

Connect to Others

As your chat client progresses you will eventually be ready to test connecting to an actual other client! If you are the first one done, come find me and I will give you connection information for my running client. Otherwise, find a group that has connected to the chat room and get their connection information.