Hey Jörg, In your doConnect function you will want to instantiate a new socket there. You can't reuse the same socket instance.
Regards, Ryan On Wed, Jan 18, 2017 at 10:52 AM, Jörg Krause <[email protected]> wrote: > Hi, > > I am trying to implement a client which tries to reconnect to server if, > for whatever reason, is not available sometimes. My application is about > piping the stdout of arecord to a TCP socket on a server. The application > works fine, but is not bullet-proof if the server is not ready or is > restarted. I want the client to reconnect to the server, without the need > of a process monitor on the client side. > > I found a similar nodejs example: https://gist.github.com/sio2boss/6334089 > > local spawn = require('childprocess').spawn > local net = require('net') > > local args = { > "-M", > "-D", "hw:0,1", > "-t", "raw", > "-c", "2", > "-r", "48000", > "-f", "S16_LE", > } > > local sock > sock = net.Socket:new() > > local function doConnect() > print("Connecting...") > > sock:connect(1234, '192.168.1.157') > end > > local function onConnect() > print("Connected") > local arecord > > arecord = spawn("arecord", args) > > arecord:on("error", function(err) > print("Spawn error:", err) > end) > arecord:on("exit", function(exit_status) > print("Exit with " .. exit_status) > end) > > arecord.stdout:pipe(sock) > arecord.stderr:pipe(sock) > end > > local function onError(err) > print("Socket error:", err) > if err == 'ECONNREFUSED' then > sock:setTimeout(1000, doConnect) > elseif err == 'EPIPE' then > sock:setTimeout(1000, doConnect) > end > end > > sock:on("connect", onConnect) > sock:on("error", onError) > > doConnect() > > > The client tries one time to reconnect, but not more: > > # luvit client.lua > Connecting... > Socket error: ECONNREFUSED > Connecting... > # > > Any idea what is wrong with my code? > > Best regards, > Jörg Krause > > -- > You received this message because you are subscribed to the Google Groups > "luvit" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "luvit" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
