Lua Socket: Difference between revisions
From Spring
Jump to navigationJump to search
No edit summary |
categories |
||
| Line 52: | Line 52: | ||
[http://springrts.com/dl/buildbot/default/luasocket/ compiled Spring test version] | [http://springrts.com/dl/buildbot/default/luasocket/ compiled Spring test version] | ||
{{forumlink|topic=27526|title=forum thread}} | {{forumlink|topic=27526|title=forum thread}} | ||
[[Category: Development]] | |||
[[Category: Lua]] | |||
Revision as of 00:35, 13 February 2012
LuaSocket is a development branch of spring: (so it maybe gets never into the main branch!)
see https://github.com/spring/spring/tree/luasocket
config settings
All LuaSocket related config is readonly for LuaWidgets. They can be only changed through unitsync.
| LuaSocketEnabled = 1 | Default is 0 means, all Socket functions are disabled |
| TCPAllowConnect | allow TCP-connections to the listed hosts, for example: "springrts.com:80 springfiles.com:80" which allows luasockets to connect to springrts.com at port 80 and springfiles.com at port 80. |
| TCPAllowListen | Server TCP-sockets are allowed on this port, for example: "localhost:1234 0.0.0.0:12345" |
| UDPAllowConnect | see TCPAllowConnect |
| UDPAllowConnect | see TCPAllowListen |
example code
see https://github.com/spring/spring/blob/luasocket/cont/examples/Widgets/luasocket.lua
Notes / known issues / TODO
- dns resolving is blocking, solutions: worker thread or some lib:
- adns http://www.chiark.greenend.org.uk/~ian/adns/
- dns.c http://25thandclement.com/~william/projects/dns.c.html
- tadns http://adns.sourceforge.net/
- or a lua implementation? biggest problem would be to find the local dns-server
- allow rules have exactly match the host:port in script. currently its not possible to use host:port in a lua widget and use the resolved hostname for connecting (and vice versa) (simple workaround, add both as rule or use the ip only)
- most lua scripts from luasocket won't work as they are blocking! rewriting them non-blocking is required! (should be in most cases few work, as parsing stuff can be reused)
- config file should be better protected, see https://github.com/spring/spring/blob/develop/rts/System/Config/ConfigHandler.cpp#L289 + https://github.com/spring/spring/commit/948d6fb9d1c95b99b5cc7929cf3e0de0f9d6d93e maybe just locking the file is best?! see also http://springrts.com/mantis/view.php?id=2891 (private report)
documentation
- http://w3.impa.br/~diego/software/luasocket/socket.html
- http://w3.impa.br/~diego/software/luasocket/tcp.html
- http://w3.impa.br/~diego/software/luasocket/udp.html