faye / websocket-driver-ruby

WebSocket protocol handler with pluggable I/O
Other
223 stars 43 forks source link

Stuck in :closing state #62

Open jakemack opened 6 years ago

jakemack commented 6 years ago

Hi, I'm trying to use this library to connect to a local instance of Chrome. I can connect, send messages, and receive responses, but when I call close on the driver, it gets stuck in the :closing state so the CloseEvent is never emitted.

My main issue is that I'm not quite sure what is supposed to happen at that point. It appears that this library is setting the status to closing and sending a close frame. I'm using tcpdump and it appears that Chrome is responding and my client is sending one more message after that.

My first thought is that perhaps I need to do something with the socket to parse and process that last message, but when I read it I get an EOFError, I assume because Chrome already closed its end of the socket.

I'm not quite sure where to go next or what to try, any thoughts? I'm using version 0.6.5 of the gem and the driver version being used is hybi-13.

jcoglan commented 5 years ago

Are you able to provide a small example of what you're doing? My initial guess was that you're not passing Chrome's close frame response into the driver after calling close, so it never changes state, but it sounds like you are doing that.

jakemack commented 5 years ago

It's been a while since I looked at this so I don't even fully remember. I'll try to make time to dig back into it in the next week or two and hopefully we can work through the issue. Hopefully it's just a matter of me using the gem slightly wrong.