{"id":20975990,"url":"https://github.com/banyc/socketapp","last_synced_at":"2025-05-14T14:31:04.925Z","repository":{"id":117847887,"uuid":"233742814","full_name":"Banyc/SocketApp","owner":"Banyc","description":"A Simple-to-use, Interactive Socket. Cross-platform. Middlewares for socket message processing.","archived":false,"fork":false,"pushed_at":"2020-10-07T06:17:30.000Z","size":181,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-02T19:03:52.220Z","etag":null,"topics":["cross-platform","csharp","dotnet","network","oop","socket","tcp"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"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/Banyc.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-01-14T02:53:08.000Z","updated_at":"2020-10-07T06:17:32.000Z","dependencies_parsed_at":null,"dependency_job_id":"a909177d-684d-49c1-87fa-880dad0ed13d","html_url":"https://github.com/Banyc/SocketApp","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Banyc%2FSocketApp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Banyc%2FSocketApp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Banyc%2FSocketApp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Banyc%2FSocketApp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Banyc","download_url":"https://codeload.github.com/Banyc/SocketApp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254160646,"owners_count":22024574,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["cross-platform","csharp","dotnet","network","oop","socket","tcp"],"created_at":"2024-11-19T04:48:35.681Z","updated_at":"2025-05-14T14:31:04.918Z","avatar_url":"https://github.com/Banyc.png","language":"C#","readme":"# SocketApp\n\nA simple interactive socket. Cross-platform.\n\n## Features\n\n- Console app. Cross-platform.\n- Build the host and the client at the same time\n- Easy to setup a new Socket experiment\n- Including additional network layers on top of the transport layer. Learn more from [`SocketApp.ProtocolStack`](src/SocketApp.ProtocolStack).\n\n## Notice\n\nThe following instructions presumes `pwd` to be [`src/SocketApp.Hybrid`](src/SocketApp.Hybrid)\n\n## Run\n\n- download dotnet SDK\n- set pwd to [the same directory as `.csproj` in](src/SocketApp.Hybrid)\n- run `dotnet run`\n\n## Customization\n\nReaction for some events is defined in class `Responser`. Those Events are\n\n- On data (byte[]) has passed down to the bottom of the protocol stack and is ready to send\n- On data has been delivered up to the top of the protocol stack and is ready for APP to consume\n- On Accept() has done\n- On Connect() has done\n- On Receiving new message (which has not been processed by the protocol stack yet)\n- On Socket is about to shutdown\n\nTo Modify the protocol stack, goto method `GetDefaultStack` in `DefaultProtocolFactory` as an example.\n\nTo build a new layer of protocol, derive your class from `IProtocol`.\n\nTo register your protocols, build your own protocol factory deriving from `IProtocolFactory`, and pass it as a parameter to `BeginBuildTcp()` from class `SockController`\n\n## TODO\n\n- [x] Deport `ProtocolStack` to an independent project.\n- [ ] Support UDP\n- [ ] SocketApp Hosts a Http Proxy Server\n- [ ] Big file transportation protocol\n- [ ] replace callback mechanism with async\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbanyc%2Fsocketapp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbanyc%2Fsocketapp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbanyc%2Fsocketapp/lists"}