Development dependencies are MRI 1.8 friendly.
Gemfile.lock probably shouldn't be committed for gems.

That's really to lock things down - but gems should be flexible (apps, not so much).
Handle IOErrors when receiving socket data.

Allow for five failures before raising an error, though mark each in the log. When I'm using this gem, I'm only seeing this error in MRI 1.8 when closing the socket (I presume it gets closed halfway through receiving data). This tidies things up.
Shift error handling to WebSocket.

Keeps the Thread creation in Socket a little cleaner. And there's now a short sleep call - otherwise, five failures can happen too quickly (though only when logging is disabled).
Ignoring Gemfile.lock
Use old-school hash syntax so 1.8 is happy.
Remove addressable, not used in this gem.
Use the right websocket class.
No need for explicit return.
Simplified error rescuing.

If there's an error reading, just send an empty array back. If there's an error closing, it's no big deal.
OpenSSL can play nicely with MRI 1.8 and read_nonblock.
Don't forget to load openssl-nonblock when MRI 1.8 is being used.
Much simpler/cleaner gemspec.
Whoops, use the right enclosure, should be an array.
Merge branch 'gemspec' of git://github.com/pat/pusher-ruby-client
merges for 0.3.0 release