{"id":19683564,"url":"https://github.com/visualstudioex3/flecktest","last_synced_at":"2026-04-14T07:32:55.812Z","repository":{"id":146109288,"uuid":"278086779","full_name":"VisualStudioEX3/FleckTest","owner":"VisualStudioEX3","description":"A little chat console program to test Fleck websockets library and IoC with Microsoft Dependency Injection library, developed in C# using .NET Core 3.1.","archived":false,"fork":false,"pushed_at":"2021-05-30T00:53:11.000Z","size":752,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-27T07:57:22.643Z","etag":null,"topics":["chat","chat-application","chatapp","csharp","dependency-injection","donet-core","dotnet","dotnetcore","fleck","job-interview","netcore","netcore31","technical-test","visual-studio","websocket"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/VisualStudioEX3.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-08T12:44:27.000Z","updated_at":"2022-09-08T05:49:40.000Z","dependencies_parsed_at":null,"dependency_job_id":"795b8f46-a4fa-41e3-863c-38b0ccb3ea71","html_url":"https://github.com/VisualStudioEX3/FleckTest","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/VisualStudioEX3/FleckTest","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VisualStudioEX3%2FFleckTest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VisualStudioEX3%2FFleckTest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VisualStudioEX3%2FFleckTest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VisualStudioEX3%2FFleckTest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/VisualStudioEX3","download_url":"https://codeload.github.com/VisualStudioEX3/FleckTest/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/VisualStudioEX3%2FFleckTest/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31786860,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-14T02:24:21.117Z","status":"ssl_error","status_checked_at":"2026-04-14T02:24:20.627Z","response_time":153,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chat","chat-application","chatapp","csharp","dependency-injection","donet-core","dotnet","dotnetcore","fleck","job-interview","netcore","netcore31","technical-test","visual-studio","websocket"],"created_at":"2024-11-11T18:14:49.999Z","updated_at":"2026-04-14T07:32:55.807Z","avatar_url":"https://github.com/VisualStudioEX3.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FleckTest\nA little chat console program to test __Fleck__ websockets library and __IoC__ with Microsoft Dependency Injection library, developed in __C#__ using __.NET Core 3.1__.\n\n* Fleck: https://github.com/statianzo/Fleck\n* Microsoft.Extensions.DependencyInjection: https://github.com/aspnet/DependencyInjection\n* NUnit for unit testing: https://docs.microsoft.com/es-es/dotnet/core/testing/unit-testing-with-nunit\n\n![FleckTest.jpg](https://github.com/VisualStudioEX3/FleckTest/blob/master/FleckTest.jpg)\n\n## Usage\nType `FleckTest.exe %PORT_NUMBER`\n\n* The program has two behaviours on the start process:\n  * First tries to connect as client to server address (in fact, for testing pourposes, currently the address always is localhost) and a port passed as argument.\n  * If the connection failed, assumed to the server is not running. Then starts the creation server proccess.\n\n## Overview and feature list\n* The client currently only implements a basic command to terminate chat session and close the program, `exit`.\n* The server supports, in theory (not tested it), an unlimited user sessions in the unique chat room.\n* Each user has able to register an unique username, any value and length except empty string or spaces.\n* The server assign an one color scheme to each user (12 variations).\n* User messages can be any string value and length except empty string or spaces.\n* The server can detect any client lost connection (the client crash or exit using the close window command instead of `exit` command) to avoid active ghost/abandoned sessions. The clients, at now, only catch the error when trying to send a message to a server that was crashed o not closed properly.\n\nFYI: The Visual Studio project has defined a port number in debug profile (Project Properties -\u003e Debug tab). You can run multiple instances of the program to run server and multiple clients (using [Debug-\u003eStart New Instance](https://docs.microsoft.com/en-us/visualstudio/debugger/debug-multiple-processes?view=vs-2019) command from context menu on project item in __Solution Explorer__ window).\n\n## Issues/bugs\n* Sometimes, the prompt/input line is not deleted by the last user message printed in console.\n* Sometimes, the messages not uses the right color assigned.\n* Multiline messages not delete properly the last prompt/input printed line.\n* The above issues seems to be because a bad tasks synchronization when changed the console settings and cursor position corrections (necessary to the right prompt behaviour, for example).\n\n## TODO list\n* Implementing ping-pong task or similar in client to check state of the server (to end session in client when the server connection is lost).\n* Basic encryption on socket messages (this would be easy to implement in the [ServerMessage](https://github.com/VisualStudioEX3/FleckTest/blob/master/FleckTest/Models/ServerMessage.cs) model implementation).\n* Additional commands like \"ping\", to send beep sound to all users or an especific user maybe, for example (this might need to extend the [IUserInputCommandProcessor](https://github.com/VisualStudioEX3/FleckTest/blob/master/FleckTest/Interfaces/IUserInputCommandProcessor.cs) service interface).\n\n## Disclaimer\nThis is a side project developed as result of a technical test for a job interview and a way to learn new technologies and common practices. Not intended to be a serious project or final product in the future.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisualstudioex3%2Fflecktest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvisualstudioex3%2Fflecktest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvisualstudioex3%2Fflecktest/lists"}