Skip to content

Design Document

Vishwas Navada K edited this page Feb 28, 2016 · 6 revisions

1. Introduction

GOOF talk is a method of using GO programming techniques to bring people and ideas together despite their geographical barriers. Our project is a client-server based application where the server has been deployed in a remote network and users who connect to that network in order to communicate become the client. To start chatting client should get connected to the server where they can practice two kinds of chatting the first being a private one between 2 users only and the next being a public one where the message is broadcasted to all the connected users.

2. Project Specification

2.1 Requirements

Language: Google GO

System Requirements: Any system with Golang installed

2.2 Functionalities

The Server

A single server program should handle all requests from the client. Multiple clients will be able to connect to a single server. The server handles requests from multiple clients.

The following functionalities will be implemented in our server application:

  • RegisterGoof: This function registers the Goof (user) who has logged in with his name to the server. It also sends a message to every Goof connected to GoofTalk at that moment about a new Goof being added.
  • CheckMessage: This function adds the message to the message queue which can be forwarded to the appropriate destination accordingly.
  • ListGoofs: This function lists all the current users connected to the GoofTalk. The list of the users will be dumped on the client output.
  • Whisper: This function aims at sending a private message to a particular Goof.
  • Shout: This function is used when a Goof wants to broadcast the message to all Goofs connected to GoofTalk at that particular instance.
  • RunGoofTalk: This function binds to the port and listens to the inputs provided by the clients.
The Client

The following functionalities will be implemented in our client application:

  • GetGoofConnection: This function aims at establishing connection to the GoofTalk server.
  • RegisterGoof: This function receives the name/ nickname of the Goof and sends it to the server for registering.
  • CheckMessage: This functions checks if the connection is established and sends the entered message to the GoofTalk server.
  • ListGoofs: This function prints the list of all the Goofs who are connected to the GoofTalk (the list dumped by the server)
  • Whisper: This function sends the Goof id, target Goof id and message to the server to be delivered to the target.
  • Shout: This function sends the Goof id and message to the server to be broadcasted to all Goofs.

There will be some other functions to handle logout, shutdown and errors in both Server sides as well as client side of the GoofTalk application.

3. Diagrams

Use Case Diagram