Yep yep, this is pretty much an attempt to port the existing project's concept https://socket.io/ to AutoIt's Codebase. So i will not go in to so much detail.
This is how the communication is done http://i.imgur.com/0mMfsBD.png Each client is isolated to the server http://i.imgur.com/rVO2LFb.png Features
Easy API VarType Translation (Example: If the server sends an int, the client will receive an int and vice versa) Fully featured examples Data encryption (Using Autoit's UDF Crypt.au3) Limitations / Drawbacks
It is not possible to Broadcast/Emit objects Only 1D-arrays are allowed to be Broadcasted/Emitted (2D arrays will probably never be supported) Changelog
Version 1.5.0 (This update DOES NOT break scripts)
Added AutoIt like docs under Docs\. The docs are generated so its a 1 to 1 reflection of the UDF headers. Print of documentation Added a production ready server example. Added a new method: _Io_DevDebug which will display useful information when debugging. Added a new method: _Io_SetMaxRecvPackageSize which defaults to whatever _Io_setRecvPackageSize is set to. Added a new method: _Io_setOnPrefix which defaults to _On_ Added a new default client & server event called flood. Flood occurs when exceeding the $__g_io_nMaxPacketSize. $__g_io_nMaxPacketSize is set by _Io_SetMaxRecvPackageSize Fixed the 16 parameter limit when sending data with _Io_Emit, _Io_Broadcast, _Io_BroadcastToAll and _Io_BroadcastToRoom. This works on the same premise that AutoIt's Call Does Fixed a TRUNCATION problem when receiving packages which could cause crashes! Fixed a programming error which caused $__g_ionPacketSize to reset to default 4096 if _Io_Connect or _Io_listenwere called after _Io_setRecvPackageSize Fixed _Io_setEventPreScript and _Io_setEventPostScript They didnt work. Lol. Changed how events are fired so the client cannot crash the server by sending the wrong number of parameters (This also allows for optional parameters on callbacks) Changed _Io_On. The second parameter $fCallback can now be set to null. Doing this, the function assumes that the callback is: _On_<eventName>.
Please see the docs provided
connection Client events
banned Server and Client events
disconnect flood View source on github
Autoit-Socket-IO-1.5.0.zip (NEWEST 2017-12-20)
So here's what I'm trying to accomplish:
I need the ability to restart an application on my desktop PC from within my home network. Obviously, writing a script to do that locally would take all of ten seconds. The trick is that I want to do it remotely. I still feel like it wouldn't be difficult to accomplish with a server/client script.
But of course, that's not good enough. I want to do it from my iPhone. And the easiest way I can see to accomplish that would be through the browser.
So in my mind, I'm thinking that, on the server side, I can listen for connections on, let's say port 8080. I can watch for a "GET / HTTP/1.1" (or whatever it is...) and respond with a simple webpage that reports a status and has a reset button.
On my phone, I type, say 192.168.1.150:8080 and get that simple page. When I click the reset button, it sends a "GET /?reset=true" or something and that will trigger a function in the server script to reset the app.
So in essence, this would be a very simple web server, one that only serves a single, hardcoded page. But this seems too simple. Is it? Or is it actually way more complicated than that?