{"id":17004869,"url":"https://github.com/clickermonkey/falcon","last_synced_at":"2026-03-14T21:34:43.712Z","repository":{"id":152212169,"uuid":"9776758","full_name":"ClickerMonkey/Falcon","owner":"ClickerMonkey","description":"A fast Java event-driven networking library that has a unified API over various networking technologies: TCP, UDP, blocking (OIO), and non-blocking (NIO).","archived":false,"fork":false,"pushed_at":"2013-11-15T20:53:21.000Z","size":716,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-12T07:08:54.825Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"osl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ClickerMonkey.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-04-30T18:02:59.000Z","updated_at":"2023-05-02T18:15:17.000Z","dependencies_parsed_at":"2023-04-09T12:14:54.113Z","dependency_job_id":null,"html_url":"https://github.com/ClickerMonkey/Falcon","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FFalcon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FFalcon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FFalcon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ClickerMonkey%2FFalcon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ClickerMonkey","download_url":"https://codeload.github.com/ClickerMonkey/Falcon/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248530583,"owners_count":21119600,"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":[],"created_at":"2024-10-14T04:44:39.520Z","updated_at":"2026-03-14T21:34:38.685Z","avatar_url":"https://github.com/ClickerMonkey.png","language":"Java","readme":"falcon\n======\n\n![Alpha](http://i4.photobucket.com/albums/y123/Freaklotr4/stage_alpha.png)\n\nA fast Java networking library that has a unified API over various networking technologies: TCP, UDP, blocking (OIO), and non-blocking (NIO).\n\n*Disclaimer: this is a work in progress, although should operate fine as is. Plans for refactoring and heavier testing are in the works*\n\n**Features**\n- Either OIO (java.io) or NIO (java.nio) can be used. The blocking-nature of the underlying library is hidden.\n- Either TCP or UDP can be used, the underlying transport protocol is hidden.\n- This is an entirely event-driven framework, only the client initiates events, the server reacts and can respond or notify other clients however it likes.\n- This is protocol independent, any protocol (like HTTP, FTP, etc) can be written for it.\n- Entirely thread-safe\n\n**Documentation**\n- [JavaDoc](http://gh.magnos.org/?r=http://clickermonkey.github.com/Falcon/)\n\n**Example**\n\n```java\n// Create the pipe (tcp+nio), set the transmission protocol.\nPipeline pipe = new TcpPipeline(); // could be: nio.UdpPipeline, oio.TcpPipeline, oio.UdpPipeline\npipe.setDefaultProtocol(String.class);\npipe.addProtocol(new StringProtocol());\n\n// Listen on port 9090 for clients\nServer server = pipe.newServer();\nserver.setClientListener(new DefaultClientListener() {\n    public void onClientReceive(Client client, Object data) {\n        super.onClientReceive(client, data);\n        // Get all clients connected to the server\n        Set\u003cClient\u003e clients = client.getServer().getClients();\n        // Send all clients the data this client sent.\n        for (Client current : clients) {\n            current.send(data);\n        }\n    }\n});\nserver.listen(9090);\n\n// Connect 2 clients\nClient client1 = pipe.newClient();\nclient1.connect(\"127.0.0.1\", 9090);\nClient client2 = pipe.newClient();\nclient2.connect(\"127.0.0.1\", 9090);\n\n// Send myself and client2 a message\nclient1.send(\"Hello Tom\");\n// Send myself and client1 a message\nclient2.send(\"Hello Beth\");\n\n// Close the clients as soon as all data is sent\nclient1.disconnect();\nclient2.disconnect();\n\n/** processing! (waiting for data to send to server) **/\n\n// Finally the server is finished, close it.\nserver.close();\n```\n\n**Builds**\n- [falcon-1.0.jar](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Falcon/blob/master/build/falcon-1.0.jar?raw=true)\n- [falcon-src-1.0.jar](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Falcon/blob/master/build/falcon-src-1.0.jar?raw=true) *- includes source code*\n- [falcon-all-1.0.jar](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Falcon/blob/master/build/falcon-all-1.0.jar?raw=true) *- includes all dependencies*\n- [falcon-all-src-1.0.jar](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Falcon/blob/master/build/falcon-all-src-1.0.jar?raw=true) *- includes all dependencies and source code*\n\n**Dependencies**\n- [taskaroo](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Taskaroo)\n- [surfice](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Surfice)\n- [zource](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Zource)\n- [buffero](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Buffero)\n- [curity](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Curity)\n- [testility](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Testility) *for unit tests*\n\n**Testing Examples**\n- [Examples/org/magnos/net/examples](http://gh.magnos.org/?r=https://github.com/ClickerMonkey/Falcon/tree/master/Examples/org/magnos/net/examples)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclickermonkey%2Ffalcon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fclickermonkey%2Ffalcon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fclickermonkey%2Ffalcon/lists"}