Skip to content
This repository has been archived by the owner on Jan 16, 2020. It is now read-only.
/ buzzer Public archive

Buzzer is a microblogging service written in Go for COP5618 Spring 2019 at the University of Florida.

License

Notifications You must be signed in to change notification settings

taeber/buzzer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Buzzer

Buzzer is a microblogging service written in Go on which users socialize by posting messages known as "buzzes". Registered users can subscribe to another users posts which appear on their "buzz-feed" along with any message in which they were mentioned (@username). Additionally, anyone can search for messages by tags (#topic).

Buzzer uses Go's channels and goroutines to coordinate the asynchronous activity and exposes the service via a WebSockets-based API for real-time, bidirectional communication with a minimal web client.

Buzzer was written solely by Taeber Rapczak using the Git ID Taeber Rapczak [email protected].

Quick Start

Install Go from https://golang.org/dl/.

$ make
$ ./buzzer src/client
$ open http://localhost:8080/

Alternatively, you can connect directly to the WebSocket server, using a WebSocket client such as https://github.com/hashrocket/ws.git, but the protocol would have to be inferred from the accept() function in ws.go.

$ ws ws://localhost:8080
> register user pass
> login user pass
> post Hello there!
> logout

Poster Board

Please see docs/Rapczak-Poster.pdf for my poster.

Design

Server

The main components of the server are:

  • kernel
  • channelServer
  • Message
  • User
  • wsClient

kernel is a implementation of Server that can only be used serially.

channelServer implements the Server interface and essentially puts a layer of channels in front of the actual kernel to provide safe, concurrent access.

Message is a message posted by a user.

User is a person or bot that uses the service.

wsClient represents a client connected to the WebSocket server.

Client

The client is a React.js application located in src/client/.

Testing

There are some unit tests which can be run using:

$ make test

There is also some benchmarking tests:

$ make benchmark

About

Buzzer is a microblogging service written in Go for COP5618 Spring 2019 at the University of Florida.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published