https://github.com/dimitrisniras/goapp
https://github.com/dimitrisniras/goapp
Last synced: 11 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/dimitrisniras/goapp
- Owner: dimitrisniras
- Created: 2024-08-22T12:27:55.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-08-24T08:51:02.000Z (almost 2 years ago)
- Last Synced: 2025-02-10T10:15:08.504Z (over 1 year ago)
- Language: Go
- Size: 38.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
# GoApp
An application for Go knowledge assessment.
## Description
This is a web application that utilises websockets. A client connects on `localhost:8080` and has three options: a) `open` a websocket connection that reads values from a counter b) `close` the websocket and c) reset the counter to zero. The counter is feeded from a random string generator. On WS session termination, statistics for terminated session are printed.
The application is compiled by running `make` in the root folder and the final binaries are found in the `bin/` folder.
The application has some problems described below that need to be addressed plus some new features that need implementation.
## Problems
### #1
The server prints statistics for each WS sessioned closed but it seems to only count one message while there are more send to each WS session, e.g.
```
2024/03/29 18:28:38 stats.go:11: session a938e316-8536-46e6-8633-bd309fbcf579 has received 1 messages
```
### #2
A more then normal memory usage is observed after many WS sessions which needs investigation.
### #3
A cross-site request forgery is reported by a security audit which needs fixing.
## New features
### A
Modify the random string generator to generate only hex values and verify its accuracy and resource usage by creating a test and a benchmark run.
### B
Extent the API to also return the Hex value in WS connection. I.e. a browser that open a connection to `localhost:8080` should see the HEX values.
E.g.
```
OPEN
RESPONSE: {"iteration":1,"value":"822876EF10"}
RESPONSE: {"iteration":2,"value":"215100491D"}
RESPONSE: {"iteration":3,"value":"05DCC3B6AB"}
CLOSE
```
### C
Create a command line client as a separate application that opens a requested number of sessions simultaneously.
This should be a separate executable generated with the `make` command in the `bin/` folder that will accept an argument with the number of parallel connections that will open on the server. The server part must be modified in a way to support multiple parallel connections and should still print valid statistics for each connection.
E.g.
```
$ ./bin/client -n 3
[conn #0] iteration: 1, value: 66D53ED788
[conn #1] iteration: 1, value: 66D53ED788
[conn #2] iteration: 1, value: 66D53ED788
...
```