{"id":15637586,"url":"https://github.com/neopallium/lua-handlers","last_synced_at":"2025-05-07T18:09:15.155Z","repository":{"id":1247487,"uuid":"1185986","full_name":"Neopallium/lua-handlers","owner":"Neopallium","description":"Provides a set of async. callback based handlers for working with raw TCP/UDP socket, ZeroMQ sockets, or HTTP client/server.","archived":false,"fork":false,"pushed_at":"2024-09-15T04:46:32.000Z","size":322,"stargazers_count":106,"open_issues_count":2,"forks_count":14,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-05-07T18:04:24.521Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Lua","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/Neopallium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2010-12-21T01:16:22.000Z","updated_at":"2024-10-19T14:41:12.000Z","dependencies_parsed_at":"2024-10-22T15:22:58.124Z","dependency_job_id":null,"html_url":"https://github.com/Neopallium/lua-handlers","commit_stats":{"total_commits":129,"total_committers":4,"mean_commits":32.25,"dds":"0.41860465116279066","last_synced_commit":"9761f6afd8efeaede3d6942a6e370fffe7eceb7a"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neopallium%2Flua-handlers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neopallium%2Flua-handlers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neopallium%2Flua-handlers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neopallium%2Flua-handlers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Neopallium","download_url":"https://codeload.github.com/Neopallium/lua-handlers/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252931532,"owners_count":21827111,"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-03T11:12:12.913Z","updated_at":"2025-05-07T18:09:14.933Z","avatar_url":"https://github.com/Neopallium.png","language":"Lua","readme":"lua-handlers\n==============\n\nProvides a set of async. callback based handlers for working with raw TCP/UDP socket, ZeroMQ sockets, or HTTP client/server.\n\n\nSocket connect/listen URI's\n---------------------------\n\nDifferent types of sockets can now be created from URI strings like `tcp://localhost:1234/` or `tls:/localhost:443/?key=examples/localhost.key\u0026cert=examples/localhost.cert`.  URI's can be used for connecting sockets or listening sockets.\n\n### TCP sockets\n\n\ttcp://\u003chostname or ip_address\u003e:\u003coptional port\u003e/\n\n### UDP sockets\n\n\tudp://\u003chostname or ip_address\u003e:\u003coptional port\u003e/\n\n### Unix domain sockets\n\n\tunix://\u003cpath to unix socket\u003e\n\n### SSL/TLS sockets over TCP\n\n\ttls://\u003chostname or ip_address\u003e:\u003coptional port\u003e/?mode=\u003cclient/server\u003e\u0026key=\u003cpath to PEM private key\u003e\u0026cert=\u003cpath to PEM public certificate\u003e\n\n### To force IPv6 sockets\n\n\ttcp6://\u003chostname or ipv6_address\u003e:\u003coptional port\u003e/\n\tudp6://\u003chostname or ipv6_address\u003e:\u003coptional port\u003e/\n\ttls6://\u003chostname or ipv6_address\u003e:\u003coptional port\u003e/?mode=\u003cclient/server\u003e\u0026key=\u003cpath to PEM private key\u003e\u0026cert=\u003cpath to PEM public certificate\u003e\n\n\n### Example server-side listen URIs:\n\n\t-- bind tcp socket to 127.0.0.1 on port 80 with an accept backlog of 1000\n\ttcp://localhost:80/?backlog=1000\n\t\n\t-- bind tcp socket to IPv6 address 2001:db8::1 on port 80 with an accept backlog of 1000\n\ttcp://[2001:db8::1]:80/?backlog=1000\n\t\n\t-- bind TLS wrapped tcp socket to 127.0.0.1 on port 443 with an accept backlog of 1000\n\t-- TLS defaults to mode=server when listening.\n\ttls://localhost:443/?backlog=1000\u0026key=private_key.pem\u0026cert=public_certificate.pem\n\t\n\t-- bind Unix domain socket to file /tmp/unix_server.sock\n\tunix:///tmp/unix_server.sock?backlog=100\n\t\n\t-- bind udp socket to 127.0.0.1 on port 53\n\tudp://localhost:53\n\t\n\t-- bind udp socket to IPv6 loop back address ::1 on port 53\n\tudp://[::1]:53\n\tor\n\tudp6://localhost:53\n\n### Example client-side connect URIs:\n\n\t-- connect tcp socket to 127.0.0.1 on port 80\n\ttcp://localhost:80\n\t\n\t-- connect tcp socket to IPv6 address 2001:db8::1 on port 80\n\ttcp://[2001:db8::1]:80\n\t\n\t-- connect tcp socket to IPv6 address of hostname ipv6.google.com on port 80\n\ttcp6://ipv6.google.com:80\n\t\n\t-- connect TLS wrapped tcp socket to 127.0.0.1 on port 443\n\t-- TLS defaults to mode=client when connecting.\n\ttls://localhost:443\n\t\n\t-- connect Unix domain socket to file /tmp/unix_server.sock\n\tunix:///tmp/unix_server.sock\n\t\n\t-- connect udp socket to 127.0.0.1 on port 53\n\tudp://localhost:53\n\t\n\t-- connect udp socket to IPv6 loop back address ::1 on port 53\n\tudp://[::1]:53\n\tor\n\tudp6://localhost:53\n\n\nSet local address \u0026 port when connecting\n----------------------------------------\n\nSockets can be bound to a local address \u0026 port before connecting to the remote host:port.  For connecting URIs add parameters `laddr=\u003clocal address\u003e\u0026lport=\u003clocal port\u003e`.\n\nExamples:\n\n\t-- connect tcp socket to host www.google.com on port 80 and bind the socket to local address 192.168.0.1\n\ttcp://www.google.com/?laddr=192.168.0.1\n\t\n\t-- connect tcp socket to host www.google.com on port 80 and bind the socket to local address 192.168.0.1 and local port 16384\n\ttcp://www.google.com/?laddr=192.168.0.1\u0026lport=16384\n\t\n\t-- connect udp socket to 10.0.0.10 on port 53 and bind to local address 10.100.100.1 and port 2053\n\tudp://10.0.0.10:53/?laddr=10.100.100.1\u0026lport=2053\n\n\nExample generic socket server \u0026 client\n--------------------------------------\n\nThe generic server can listen on any number of sockets with different types.  The clients read stdin and send each line to the server which then re-sends the message to all connected clients.\n\nStart generic socket server:\n\tlua examples/generic_chat_server.lua tcp://127.0.0.1:1080/ \"tls://127.0.0.1:4433/?key=examples/localhost.key\u0026cert=examples/localhost.cert\" tcp://[::1]:1082/ unix:///tmp/test.sock?backlog=1234 udp6://localhost:2053\n\nStart generic socket client:\n\tlua examples/generic_chat_client.lua tcp://localhost:1080\n\t-- or\n\tlua examples/generic_chat_client.lua udp6://localhost:2053\n\t-- or\n\tlua examples/generic_chat_client.lua tls://127.0.0.1:4433/\n\t-- or\n\tlua examples/generic_chat_client.lua tcp://[::1]:1082/\n\t-- or\n\tlua examples/generic_chat_client.lua unix:///tmp/test.sock\n\nInstalling\n----------\n\n### Install base package lua-handler:\n\n\tluarocks install \"https://github.com/brimworks/lua-ev/raw/master/rockspec/lua-ev-scm-1.rockspec\"\n\n\tluarocks install \"https://github.com/Neopallium/nixio/raw/master/nixio-scm-0.rockspec\"\n\n\tluarocks install \"https://github.com/Neopallium/lua-handlers/raw/master/lua-handler-scm-0.rockspec\"\n\n### Install optional sub-package lua-handler-http:\n\n\tluarocks install \"https://github.com/brimworks/lua-http-parser/raw/master/lua-http-parser-scm-0.rockspec\"\n\n\tluarocks install \"https://github.com/Neopallium/lua-handlers/raw/master/lua-handler-http-scm-0.rockspec\"\n\n\n### Install optional sub-package lua-handler-zmq:\n\n\tluarocks install \"https://github.com/Neopallium/lua-zmq/raw/master/rockspecs/lua-zmq-scm-1.rockspec\"\n\n\tluarocks install \"https://github.com/Neopallium/lua-handlers/raw/master/lua-handler-zmq-scm-0.rockspec\"\n\n\nDependencies\n------------\n### Base lua-handler package required dependcies:\n\n* [Lua-ev](https://github.com/brimworks/lua-ev)\n* [Nixio](https://github.com/Neopallium/nixio)\n\n### Dependencies for optional lua-handler-http package:\n\n* [Lua-ev](https://github.com/brimworks/lua-ev)\n* [Lua-http-parser](https://github.com/brimworks/lua-http-parser)\n* [LuaSocket](http://w3.impa.br/~diego/software/luasocket/), needed for the ltn12 sub-module.\n\n### Dependencies for optional lua-handler-zmq package:\n\n* [Lua-ev](https://github.com/brimworks/lua-ev)\n* [ZeroMQ](http://www.zeromq.org/) requires at least 2.1.0\n* [ZeroMQ-lua](http://github.com/Neopallium/lua-zmq)\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneopallium%2Flua-handlers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneopallium%2Flua-handlers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneopallium%2Flua-handlers/lists"}