@@ -28,6 +28,10 @@ public static interface Handler {
2828
2929 public void onDisconnect (int code , String reason );
3030
31+ public void onJSON (JSONObject json );
32+
33+ public void onMessage (String message );
34+
3135 public void onError (Exception error );
3236 }
3337
@@ -87,6 +91,27 @@ public void run() {
8791 }
8892 });
8993 }
94+
95+ public void emit (final String message ) {
96+ mSendHandler .post (new Runnable () {
97+
98+ @ Override
99+ public void run () {
100+ mClient .send (String .format ("3:::%s" , message ));
101+ }
102+ });
103+ }
104+
105+ public void emit (final JSONObject jsonMessage ) {
106+
107+ mSendHandler .post (new Runnable () {
108+
109+ @ Override
110+ public void run () {
111+ mClient .send (String .format ("4:::%s" , jsonMessage .toString ()));
112+ }
113+ });
114+ }
90115
91116 private void connectSession () throws URISyntaxException {
92117 mClient = new WebSocketClient (new URI (mURL + "websocket/" + mSession ), new WebSocketClient .Listener () {
@@ -110,11 +135,47 @@ public void onMessage(String message) {
110135 // heartbeat
111136 mClient .send ("2::" );
112137 break ;
113- case 3 :
138+ case 3 : {
114139 // message
115- case 4 :
116- // json message
117- throw new Exception ("message type not supported" );
140+ final String messageId = parts [1 ];
141+ final String dataString = parts [3 ];
142+
143+ if (!"" .equals (messageId )) {
144+ mSendHandler .post (new Runnable () {
145+
146+ @ Override
147+ public void run () {
148+ mClient .send (String .format ("6:::%s" , messageId ));
149+ }
150+ });
151+ }
152+ mHandler .onMessage (dataString );
153+ break ;
154+ }
155+ case 4 : {
156+ //json message
157+ final String messageId = parts [1 ];
158+ final String dataString = parts [3 ];
159+
160+ JSONObject jsonMessage = null ;
161+
162+ try {
163+ jsonMessage = new JSONObject (dataString );
164+ } catch (JSONException e ) {
165+ jsonMessage = new JSONObject ();
166+ }
167+ if (!"" .equals (messageId )) {
168+ mSendHandler .post (new Runnable () {
169+
170+ @ Override
171+ public void run () {
172+ mClient .send (String .format ("6:::%s" , messageId ));
173+ }
174+ });
175+ }
176+ mHandler .onJSON (jsonMessage );
177+ break ;
178+ }
118179 case 5 : {
119180 final String messageId = parts [1 ];
120181 final String dataString = parts [3 ];
0 commit comments