GithubHelp home page GithubHelp logo

ezoic-intern-summer-2022-project's Introduction

Ezoic Intern Summer 2022 Project

Assumptions

  • Simple local, networking protocol communication through sockets
  • Don't need webpage (i.e HTML, CSS, JS) or UI

Approach

  • Setup server first so clients to connect by listening
  • Connect clients to server to allow socket communication
  • Implement multi-threading to handle multiple clients after 1 on 1 communication works
  • Add small details

Libraries used

  • import socket to handle communication between sockerts
  • import threading to handle multi-threading to allow clients executing independently
  • import colorama to color username text
  • import sys

Decisions and tradeoffs

  • OOP vs Procedural Programming
    • For this project, I took on a more procedural path since the server and client code didn't need to be reused or shared for other programs

Features

  • Chatroom that allows multiple clients to communicate to everyone in the chat
  • Implemented a help menu, a quit system, and a way to get current users in the chat
  • Usernames have colors

Improvements

  • If it were a bigger project

    • Display on webpage, style it, and make it look nice
    • Use a framework like React instead of Python's socket implementation
  • If I had more time

    • Implement /kick function
      • Tried but there's a few bugs so didn't end up pushing
    • Implement possibly a /ban
    • Implement unique usernames
    • Implement a login system to store users and their passwords
    • Figure out why timestamps were inaccurate using multiple sockets.
      • Client2 ends up exceeding Client1's timestamp even though Client1 started first
    • Fix current bug issues:
      • Disconnection message isn't shown properly on exit on exception
      • Client1 has to enter their username first before Client2 can do anything

ezoic-intern-summer-2022-project's People

Contributors

alvi09 avatar

Watchers

 avatar mason perler avatar  avatar

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.