From: Steve V. <vi...@ie...> - 2012-04-20 23:26:53
|
On Fri, Apr 20, 2012 at 5:54 PM, Andrei Soroker <so...@gm...> wrote: > Greetings! > > I'm looking for an easy way to do some cleanup on a client-initiated > websocket closure. Is there such a way? If not, how about something > like this: > > --- a/yaws/src/yaws_websockets.erl > +++ b/yaws/src/yaws_websockets.erl > @@ -164,6 +164,7 @@ loop(CallbackMod, #ws_state{sock=Socket}=WSState, > CallbackState, CallbackType) - > NewWSState = Last#ws_frame_info.ws_state, > loop(CallbackMod, NewWSState, NewCallbackState, CallbackType); > {tcp_closed, Socket} -> > + CallbackMod:handle_close(self()), > ok; > _Any -> > loop(CallbackMod, WSState, CallbackState, CallbackType) Currently there is no such callback. Not a bad idea to add one, but the approach above requires all existing modules to add a new callback, plus it overlaps with the existing approach of sending a {close, Status, Reason} tuple to a basic callback module's handle_message fun when the server closes the connection. There's also the advanced callback module to worry about. Let me think about it a bit and get back to you. --steve |