Giter VIP home page Giter VIP logo

chat-app's Introduction

Node Chat App (CSCI-3550)

Casey Largent, Kevin Nicklen, and Erik Shafer

Project Objective

"Develop a simple chat client in the language of your choice." - Gregory Gelfond (2017)

High-Level Overview

Using the NodeJS JavaScript runtime, we developed a chatroom reminiscent of an Internet Relay Chat (IRC) application. The chat process works on a client/server networking model. Clients are required to obtain the ClientSocket.js application, as it comes pre-configured to connect to the ServerSocket.js application.

Getting Started

Dependencies

  • NodeJS: Node is a runtime environment for JavaScript. It must be downloaded (https://nodejs.org/en/, latest stable is 8.9.1) to run the application.

Starting the server

  1. To start the server application: /node ServerSocket.js
  2. Enter the maximum amount of chat clients allowed.
  3. You're now good to begin running clients!

Starting the client

  1. To start the client application: /node ClientSocket.js
  2. Enter your nickname
  3. Begin chatting!

Bugs

  1. Commands: /nick and /help: There is an issue that once a client types in either /nick and /help, they will need to hit enter (return carriage) one more time. This is due to the chat submission implementation that begins with the > arrow, and how the last command submitted it overwritten with a timestamp, nickname, and chat message.

    • Help command /help
    • Blank line.
    • Hit enter to dispaly arrow >
    • User types message: > hello
    • Processed message: [23:59:59] Erik: hello

Features

  • Entering the Server

  • Users already connected are displayed in a list for the newly connected client. If no one is connected, the client is encouraged to invite friends.

  • Help Command

  • /help

  • Brings up commands to help users understand the client application better.

  • Away From Keyboard

  • /afk

  • Inbound messages are not shown to the client. A notification for going or coming back from AFK is broadcasted to the server.

  • Exiting the Server

  • /exit Properly exits the server.

  • Broadcasts across chat.

  • Changing Nickname

  • /nick [arg]

  • Replace [arg] with your new nickname.

  • Broadcasts change to chat.

chat-app's People

Contributors

erikshafer avatar monocline avatar

Stargazers

 avatar

Watchers

 avatar  avatar

chat-app's Issues

Chat Room Status

When the user connects to the chat room, it should display the current users in the chat room. Possibly add a command that also lists the users.

Add connection verification to Client

As of now, there is no way to know if the client has connected to the IRC client. Add a verification message to the client side after the client has successfully or unsuccessfully connected.

AFK Command

If a client types in /afk, they will no longer receive messages until they type in /afk again.

Documentation (README.md)

Produce a document that describes

  1. the overall homework objective
  2. the project at a high-level
  3. the features that were implemented

Exit command

If a user types in /exit, then the client will exit gracefully from the server.

/help command

When the user types in /help, it will list out all the possible slash commands within the program.

Unique Nicknames for Clients

In the current implementation, we have nicknames that don't have to be unique, causing confusion. Append the ID number or something to the end of the string. May need to consider generating random ID numbers for the system.

Log all messages to a file

Currently, events and messages are logged to the console screen. We should implement a log file to log all messages and events. Possibly use later to log previous messages.

Add room capacity option to server.

When the server is created, we should be able to specify how many connections we can have on the server at one time. When the max limit is reached, the incoming connection will be rejected and closed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.