<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div><br></div><div><br></div><div>At 2017-02-11 04:37:16, "Andy Green" <andy@warmcat.com> wrote:<br>><br>><br>>On February 11, 2017 1:21:02 AM GMT+08:00, hanguofu <hanguofu@163.com> wrote:<br>>>Hi , there :<br>>><br>>><br>>>I would like to maintain  a list of online clients at the server side.<br>>>( Both of the clients and the server implement LWS library version<br>>>2.1.0. ) So at the "LWS_CALLBACK_CLOSED" callback of the server , I<br>>>deleted the dis-connected peer from the list. Unfortunately , sometimes<br>>>it does not work : the peer dis-connected without server's notice.<br>><br>>What happens when you get that situation?</div><div><br></div><div>The disconnected client seems O.K. At least , according to the log file of the </div><div>disconnected client , it exits normally with "NOTICE: lws_context_destroy"  </div><div>and "LWS_CALLBACK_CLOSED" callback is called --- the logic/program at the</div><div>client side functions.</div><div>However, the server didnot know the interested client was disconnected , so <br>it sent messages to the client as usual. After a while , it finally finds out :<br>the  "LWS_CALLBACK_CLOSED" callback is triggered and the peer is removed from the list.</div><div><br></div><div>Of course , the greatest lost is the sent messages , gone with the wind too:(<br>Is that what you are asking ?</div><div><br></div><div><br>Regards !</div><div><br></div><div><br>Guofu Han</div><div><br></div><div><br></div><div><br></div><div>><br>>>Is the ping-pong feature the only way out ?<br>><br>>More exactly under some conditions it's only when you try to write to a silently "gone" peer that you can realize he's gone.  The ping / pong stuff will guarantee to provide writes on idle connections at intervals, so lws can know they are gone with a maximum latency and close them.<br>><br>>-Andy<br>><br>>><br>>>Regards !<br>>><br>>><br>>>Guofu Han</div><div><br></div><div><br></div><pre></pre></div>