The next point to fix here, is why not send userData and type along with all these broadcasts. I guess it should not break anything since we are only adding fields. Either way, someone should be able to use userData along with an offline message as well.  (For e.g., if userData is a name, we might be able to announce user 'name' has gone offline in the UI.