본문 바로가기
카테고리 없음

[안드로이드] socket.io 예제 소스모음

by soulduse 2016. 8. 4.
반응형

요즘 부쩍 socket io를 통한 소켓통신을 하는 경우가 많아졌다.

라이브러리를 활용하여 소켓통신을 하면서,


많은 문제점들에 대해서 겪게 되었는데

1.소켓id의 유실(유령 커넥트가 발생)으로 서버와 클라이언트간 통신 단절

2. reconnect에 대한 불확실성

3. 서버로 해당 데이터 query 보내기

4. 서버로 데이터를 요청하지만 리턴값을 못받는 현상. 


위와 같이 많은 어려움들이 있었다. 마침 구글링 하다 좋은 예제 소스들을 친절하게 작성되어있는 것을 발견하였고, 소켓통신을 구성할 때 두고두고 참고하면 좋을 것 같아 포스팅 한다.



Java Code Examples for com.github.nkzawa.socketio.client.Socket

The following are top voted examples for showing how to use com.github.nkzawa.socketio.client.Socket. These examples are extracted from open source projects. You can vote up the examples you like and your votes will be used in our system to product more good examples. 

Example 1
Project: DragonGoApp   File: OGSConnection.java View source codeVote up6 votes
static void connectChat(final int gameid) {
    try {
        final Socket socket = IO.socket(ioserver);
        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                System.out.println("PASS HERE");
                try {
                    JSONObject parms = new JSONObject();
                    parms.put("game_id", gameid);
                    parms.put("player_id", 1);
                    parms.put("chat", true);
                    socket.emit("game/connect", parms);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }

        }).on("game/"+gameid+"/gamedata", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                JSONObject obj = (JSONObject) args[0];
                System.out.println("PASS HEREZ " + obj);
                socket.disconnect();
            }

        }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                System.out.println("PASS HEREGG");
            }

        });
        socket.connect();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
 
Example 2
Project: android-socket.io-demo   File: ImmediateClose.java View source codeVote up6 votes
public static void main(String[] args) throws URISyntaxException {
    IO.Options options = new IO.Options();
    options.forceNew = true;
    final Socket socket = IO.socket("http://localhost:" + System.getenv("PORT"), options);
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            System.out.println("connect");
        }
    }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            System.out.println("disconnect");
        }
    });
    socket.connect();
    socket.disconnect();
}
 
Example 3
Project: android-socket.io-demo   File: ConnectionFailure.java View source codeVote up6 votes
public static void main(String[] args) throws URISyntaxException {
    int port = Integer.parseInt(System.getenv("PORT"));
    port++;
    IO.Options options = new IO.Options();
    options.forceNew = true;
    options.reconnection = false;
    final Socket socket = IO.socket("http://localhost:" + port, options);
    socket.on(Socket.EVENT_CONNECT_TIMEOUT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            System.out.println("connect timeout");
        }
    }).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            System.out.println("connect error");
        }
    }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            System.out.println("disconnect");
        }
    });
    socket.open();
}
 
Example 4
Project: android-socket.io-demo   File: Connection.java View source codeVote up6 votes
public static void main(String[] args) throws URISyntaxException {
    IO.Options options = new IO.Options();
    options.forceNew = true;
    final Socket socket = IO.socket("http://localhost:" + System.getenv("PORT"), options);
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            System.out.println("connect");
            socket.close();
        }
    });
    socket.open();
}
 
Example 5
Project: XChange   File: BTCChinaSocketIOClientBuilderDemo.java View source codeVote up6 votes
public static void main(String[] args) throws InterruptedException {

    Socket socket = BTCChinaSocketIOClientBuilder.create().setUri(URI.create("https://websocket.btcchina.com"))
        .subscribeMarketData(CurrencyPair.BTC_CNY).build();

    socket.on(EVENT_TICKER, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        JSONObject jsonObject = (JSONObject) args[0];
        System.out.println(jsonObject);
      }
    });

    socket.connect();

    // Demonstrate for 30 seconds.
    TimeUnit.SECONDS.sleep(30);

    socket.disconnect();
  }
 
Example 6
Project: socket.io-client.java   File: Adapter.java View source codeVote up6 votes
/**
 * Listen connection, and events handlers
 * 
 * @method OnConnect
 */
public void OnConnect(){
	socket.on(Socket.EVENT_CONNECT, EVENT_CONNECT);	
	socket.on(Socket.EVENT_CONNECT_ERROR, EVENT_CONNECT_ERROR);
	socket.on(Socket.EVENT_CONNECT_TIMEOUT, EVENT_CONNECT_TIMEOUT);         
	socket.on(Socket.EVENT_DISCONNECT, EVENT_DISCONNECT);
	socket.on(Socket.EVENT_ERROR, EVENT_ERROR);	
	socket.on(Socket.EVENT_MESSAGE, EVENT_MESSAGE);
	socket.on(Socket.EVENT_RECONNECT, EVENT_RECONNECT);	         
	socket.on(Socket.EVENT_RECONNECT_ATTEMPT, EVENT_RECONNECT_ATTEMPT);
	socket.on(Socket.EVENT_RECONNECT_ERROR, EVENT_RECONNECT_ERROR);
	socket.on(Socket.EVENT_RECONNECT_FAILED, EVENT_RECONNECT_FAILED);
	socket.on(Socket.EVENT_RECONNECTING, EVENT_RECONNECTING);		 
}
 
Example 7
Project: socket.io-client.java   File: Adapter.java View source codeVote up6 votes
/**
 * Listen connection, and events handlers
 * 
 * @method OnConnect
 */
public void OffListener(){
	socket.off(Socket.EVENT_CONNECT, EVENT_CONNECT);	
	socket.off(Socket.EVENT_CONNECT_ERROR, EVENT_CONNECT_ERROR);
	socket.off(Socket.EVENT_CONNECT_TIMEOUT, EVENT_CONNECT_TIMEOUT);         
	socket.off(Socket.EVENT_DISCONNECT, EVENT_DISCONNECT);
	socket.off(Socket.EVENT_ERROR, EVENT_ERROR);	
	socket.off(Socket.EVENT_MESSAGE, EVENT_MESSAGE);
	socket.off(Socket.EVENT_RECONNECT, EVENT_RECONNECT);	         
	socket.off(Socket.EVENT_RECONNECT_ATTEMPT, EVENT_RECONNECT_ATTEMPT);
	socket.off(Socket.EVENT_RECONNECT_ERROR, EVENT_RECONNECT_ERROR);
	socket.off(Socket.EVENT_RECONNECT_FAILED, EVENT_RECONNECT_FAILED);
	socket.off(Socket.EVENT_RECONNECTING, EVENT_RECONNECTING);		 
}
 
Example 8
Project: plugin-socket.io   File: SocketIO.java View source codeVote up6 votes
@SuppressWarnings("unused")
private void connect(final JSONArray args, final CallbackContext callbackContext) throws JSONException {
  String uri;
  try {
    uri = args.getString(0);
    Log.d("CordovaLog", "--uri: " + uri);
    socket = IO.socket(uri);
    
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
      
      @Override
      public void call(Object... args) {
        Log.d("CordovaLog", "--connect: success");
        callbackContext.success();
      }
    });
    socket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
      
      @Override
      public void call(Object... args) {
        Log.d("CordovaLog", "--connect: error");
        callbackContext.error("" + args[0]);
      }
    });
    socket.connect();
  } catch (Exception e) {
    e.printStackTrace();
    callbackContext.error(e.getMessage());
  }
}
 
Example 9
Project: plugin-socket.io   File: SocketIO.java View source codeVote up6 votes
@SuppressWarnings("unused")
private void emit(final JSONArray args, final CallbackContext callbackContext) throws JSONException {
  // Get emit parameters
  boolean needCallback = args.getBoolean(0);
  String event = args.getString(1);
  
  Object[] params = new Object[args.length() - 2];
  for (int i = 2; i < args.length(); i++) {
    params[i - 2] = args.get(i);
  }
  
  Class<Socket> socketClass = (Class<Socket>) socket.getClass();
  try {
    Method emit = null;
    if (needCallback) {
      emit = socketClass.getMethod("emit", String.class, Object[].class, Ack.class);
      emit.invoke(socket, event, params, new Ack() {
        @Override
        public void call(Object... args) {
          callbackContext.sendPluginResult(makePluginResult(PluginResult.Status.OK, args));
        }
      });
    } else {
      emit = socketClass.getMethod("emit", String.class, Object[].class);
      emit.invoke(socket, event, params);
    }
  } catch (Exception e) {
    e.printStackTrace();
  }
}
 
Example 10
Project: PalaverAndroidClient   File: ChatActivity.java View source codeVote up6 votes
@Override
public void finish() {

    Log.d(TAG, "finish()");
    mSocket.emit("disconnect", "{}");
    mSocket.disconnect();
    mSocket.off(Socket.EVENT_ERROR, onError);
    mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
    mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
    mSocket.off(Socket.EVENT_RECONNECT_ATTEMPT, onReconnectAttempt);
    mSocket.off("message", onMessageRecieved);

    super.finish();
}
 
Example 11
Project: PalaverAndroidClient   File: ChatActivity.java View source codeVote up6 votes
@Override
public void onDestroy() {

    Log.d(TAG, "onDestroy()");
    mSocket.emit("disconnect", "{}");
    mSocket.disconnect();
    mSocket.off(Socket.EVENT_ERROR, onError);
    mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
    mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
    mSocket.off(Socket.EVENT_RECONNECT_ATTEMPT, onReconnectAttempt);
    mSocket.off("message", onMessageRecieved);

    super.onDestroy();
}
 
Example 12
Project: BikeBuds   File: ControllerClient.java View source codeVote up5 votes
public static void connect (final Activity that, final TextView connectionStatus, final Button startRide) {
    System.out.println("Trying to connect");
    try {
        socket = IO.socket("http://" + IP_ADDRESS + ":" + PORT);
    } catch (URISyntaxException e) {
        e.printStackTrace();
    }
    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            System.out.println("CONNECTED!!!! :D");
            that.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    connectionStatus.setText("Connected to server");
                    connectionStatus.setTextColor(Color.GREEN);
                    startRide.setText("Start Group Ride");
                }
            });
        }
    }).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            System.out.println("Failed to connect");
            that.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    connectionStatus.setText("Failed to connected to server");
                    connectionStatus.setTextColor(Color.RED);
                    startRide.setText("Start Solo Ride");
                }
            });
        }
    }).on("receive locations", new Emitter.Listener() {
     @Override
     public void call (Object... args) {
      final JSONArray members = (JSONArray) args[0];
            System.out.println("getting new data, " + members.length() + " users");
            RidePainter.partyMembers.clear();
      for (int i = 0; i < members.length(); i++) {
       try {
                    JSONObject memberJSON = members.getJSONObject(i);
        PositionUpdate member = new PositionUpdate(memberJSON.getDouble("x"), memberJSON.getDouble("y"));
        float[] color = {i * 20, 1, 0.5f};
        double[] relPos = {member.x, member.y};
        RidePainter.partyMembers.add(new PartyMember(new PositionUpdate(relPos[0], relPos[1]), Color.HSVToColor(color)));
       } catch (JSONException e) {
        e.printStackTrace();
       }
      }
     }
    });
    socket.connect();
}
 
Example 13
Project: kido-android   File: PubSubChannel.java View source codeVote up5 votes
/**
 * Subscribes the specified callback in the current channel
 *
 * @param callback
 * @throws URISyntaxException
 */
public void Subscribe(final ServiceEventListener callback) throws URISyntaxException {
    String ep = mPubSubEndpoint.replace("/local", "");
    mSocket = IO.socket(ep);
    mApiCallback = callback;

    mSocket.io().on(Manager.EVENT_TRANSPORT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            Transport transport = (Transport) args[0];
            transport.on(Transport.EVENT_OPEN, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    //Map<String, String> headers = (Map<String, String>) args[0];
                    //headers.put(Constants.AUTHORIZATION_HEADER, mUserIdentity.Token);
                    String bindMessage = "{ \"application\": \"" + mKidoApplicationName + "\", \"channel\": \"" + mChannel + "\" }";
                    mSocket.emit(KIDO_BIND_TO_CHANNEL, bindMessage);

                }
            });
            transport.on(Transport.EVENT_PACKET, new Emitter.Listener() {
                @Override
                public void call(Object... args) {
                    Packet data = (Packet) args[0];
                    if (data.type.equals("message") && data.data != null) {

                        JSONObject messageAsJson = parseMessage(data.data);
                        if (messageAsJson != null) {
                            ServiceEvent event = new ServiceEvent(this, HttpStatus.SC_OK, messageAsJson.toString(), messageAsJson);
                            mMessagesCallback.onFinish(event);
                        }
                    }
                    //Log.i(TAG, String.valueOf(data.data));
                }
            });
        }
    });

    mSocket.on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            Log.d(TAG, Socket.EVENT_DISCONNECT);
        }

    });

    mSocket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            if (mApiCallback != null)
                mApiCallback.onFinish(new ServiceEvent(this, HttpStatus.SC_INTERNAL_SERVER_ERROR, "Socket connection error.", null));
        }
    });

    mSocket.on(KIDO_BIND_ACCEPTED, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            JSONObject jResponse = (JSONObject) args[0];
            try {
                mResponseChannelName = jResponse.getString("responseChannelName");
            } catch (JSONException e) {
                e.printStackTrace();
            }
        }
    });

    mSocket.connect();
    mApiCallback = callback;
}
 
Example 14
Project: Clippr   File: ClipboardLoggerService.java View source codeVote up5 votes
protected void onPostExecute(String address) {
    //initializing the clipboard manager
    mClipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);

    try {

        //Part 1: connecting to the socket
        mSocket = IO.socket("http://" + address + ":3000");
        mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                Log.d("GJ", "Humm, connect error");
                mSocket.disconnect();
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(ClipboardLoggerService.this, R.string.connection_timeout, Toast.LENGTH_LONG).show();
                        stopSelf();
                    }
                });
            }
        }).on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                Log.d("GJ", "Humm, connect error");
                mSocket.disconnect();
                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(ClipboardLoggerService.this, R.string.connection_failed, Toast.LENGTH_LONG).show();
                        stopSelf();
                    }
                });
            }
        }).on(Socket.EVENT_CONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                //starting the notification
                Resources res = getResources();
                mBuilder = new NotificationCompat.Builder(ClipboardLoggerService.this);
                mBuilder.setSmallIcon(R.drawable.notification_icon);
                mBuilder.setContentTitle(res.getString(R.string.clipboard_sharing_activated));
                mBuilder.setContentText(res.getString(R.string.clipboard_synchronized));
                mBuilder.setOngoing(true);

                Intent resultIntent = new Intent(ClipboardLoggerService.this, MainActivity.class);
                TaskStackBuilder stackBuilder = TaskStackBuilder.create(ClipboardLoggerService.this);
                stackBuilder.addParentStack(MainActivity.class);
                stackBuilder.addNextIntent(resultIntent);
                PendingIntent resultPendingIntent;
                resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
                mBuilder.setContentIntent(resultPendingIntent);

                mNotificationManager.notify(31415, mBuilder.build());

                mHandler.post(new Runnable() {
                    @Override
                    public void run() {
                        Toast.makeText(ClipboardLoggerService.this, "Connected!", Toast.LENGTH_LONG).show();
                    }
                });
            }

        }).on("clipboard", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                ClipData clipData = ClipData.newPlainText("simple text", args[0].toString());
                mClipboard.setPrimaryClip(clipData);
            }

        });
        mSocket.connect();

        //Part 2: listening for clipboard changes
        mClipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {

            @Override
            public void onPrimaryClipChanged() {
                String c = mClipboard.getPrimaryClip().getItemAt(0).coerceToText(getApplicationContext()).toString();
                mSocket.emit("clipboard", c);
            }

        });

    } catch (URISyntaxException e) {

        Log.e("Socket chat", "Error: could not connect to server :(");

    }
}
 
Example 15
Project: TwitchNotifier   File: StreamTip.java View source codeVote up5 votes
public boolean Init() {
	if (!ConfigStreamTipSettings.streamTipEnabled) { return false; }

	IO.Options options = new IO.Options();
	options.query = "client_id=" + ConfigStreamTipSettings.streamTipClientID + "&access_token=" + ConfigStreamTipSettings.streamTipAccessToken;

	try {
		Socket socket = IO.socket("https://streamtip.com", options);

		socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
			@Override public void call(Object... args) {
				Log.info("Connected to streamtip.com");
			}
		})

		.on("authenticated", new Emitter.Listener() {
			@Override public void call(Object... args) {
				Log.info("Authenticated to StreamTip.com");
			}
		})

		.on("error", new Emitter.Listener() {
			@Override public void call(Object... args) {
				Log.fatal("Error returned from StreamTip.com, the error was: " + args[0]);
			}
		})

		.on("newTip", new Emitter.Listener() {
			@Override public void call(Object... args) {
				JSONObject newTip = (JSONObject) args[0];
				String tipAmount = "";
				String tipFrom = "";
				String tipMessage = "";
				try {
					tipAmount = newTip.getString("currencySymbol") + newTip.getString("amount");
					tipFrom = newTip.getString("username");
					tipMessage = newTip.getString("note");
				} catch (Exception ex) {
					Log.fatal("Error while parsing new tip");
					Log.fatal(ex);
				}

				Log.info("New TIP => From: " + tipFrom + " Amount: " + tipAmount + " Note: " + tipMessage);

				// Format Message
				String notificationMessage = ConfigStreamTipSettings.streamTipNotificationMessage;
				notificationMessage = notificationMessage.replace("%USERNAME%", tipFrom);
				notificationMessage = notificationMessage.replace("%AMOUNT%", tipAmount);
				notificationMessage = notificationMessage.replace("%MESSAGE%", tipMessage);
				String finalMessage[] = notificationMessage.split("%%");

				NotificationHelper.addNotification(ConfigStreamTipSettings.streamTipShowFireworks, ConfigStreamTipSettings.streamTipShowAlertBox, finalMessage);
			}
		});

		socket.connect();

	} catch (Exception ex) {
		Log.fatal("Error");
		Log.fatal(ex);
		return false;
	}

	return true;
}
 
Example 16
Project: pimatic-android   File: SocketClient.java View source codeVote up5 votes
public SocketClient(final Activity mainActivity, final ConnectionOptions conOpts) {
    this.mainActivity = mainActivity;
    IO.Options opts = new IO.Options();
    opts.query = "username=" + conOpts.username + "&password=" + conOpts.password;
    opts.reconnection = true;
    opts.forceNew = true;
    final DeviceManager deviceManager = DeviceManager.getInstance();
    final GroupManager groupManager = GroupManager.getInstance();
    final DevicePageManager devicePageManager = DevicePageManager.getInstance();
    try {
        socket = IO.socket(conOpts.getBaseUrl(), opts);
        socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                Log.v("connect", Arrays.toString(args));
            }

        }).on("hello", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject helloObject = (JSONObject) args[0];
                Log.v("hello", Arrays.toString(args));
                try {
                    final JSONObject permissionsObject = helloObject.getJSONObject("permissions");

                    mainActivity.runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                        try {
                            PermissionManager.updateFromJson(permissionsObject);
                            JSONObject params = new JSONObject();
                            params.put("criteria", new JSONObject(){
                                {
                                    put("level","error");
                                }
                            });
                            SocketClient.this.call("queryMessagesCount", params);
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }

                        }
                    });
                }
                catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }).on("devices", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONArray deviceArray = (JSONArray) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            deviceManager.updateFromJson(deviceArray);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("deviceChanged", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject deviceObject = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            deviceManager.updateDeviceFromJson(deviceObject);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("deviceAdded", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject deviceObject = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            deviceManager.addDeviceFromJson(deviceObject);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("deviceRemoved", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject deviceObject = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            deviceManager.removeDeviceById(deviceObject.getString("id"));
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }

        }).on("deviceAttributeChanged", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject eventObject = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            deviceManager.deviceAttributeChanged(
                                    eventObject.getString("deviceId"),
                                    eventObject.getString("attributeName"),
                                    eventObject.getInt("time"),
                                    eventObject.get("value")
                            );
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });

            }
        }).on("pages", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONArray devicePageArray = (JSONArray) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            devicePageManager.updateFromJson(devicePageArray);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("pageChanged", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject page = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            devicePageManager.updateDevicePageFromJson(page);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("pageAdded", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject page = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            devicePageManager.addDevicePageFromJson(page);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("pageRemoved", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject devicePageObject = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            devicePageManager.removeDevicePageById(devicePageObject.getString("id"));
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }

        }).on("groups", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONArray groupsArray = (JSONArray) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            groupManager.updateFromJson(groupsArray);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("groupChanged", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject group = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            groupManager.updateGroupFromJson(group);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("groupAdded", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject group = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            groupManager.addGroupFromJson(group);
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }
        }).on("groupRemoved", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject groupEvent = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            groupManager.removeGroupById(groupEvent.getString("id"));
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });

            }
        }).on("callResult", new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                final JSONObject callResult = (JSONObject) args[0];
                mainActivity.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            Log.v("socket", callResult.toString(2));
                        } catch (JSONException e1) {
                            e1.printStackTrace();
                        }
                    }
                });
            }


        }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

            @Override
            public void call(Object... args) {
                Log.v("disconnect", Arrays.toString(args));
            }

        })
                .on(Socket.EVENT_ERROR, onConnectError)
                .on(Socket.EVENT_CONNECT_ERROR, onConnectError)
                .on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);


    } catch (
            URISyntaxException e
            )

    {
        e.printStackTrace();
    }


}
 
Example 17
Project: XChange   File: BTCChinaSocketIOClientBuilder.java View source codeVote up5 votes
public Socket build() {

    if ((!this.orderFeed.isEmpty() || this.subscribeAccountInfo) && (this.accessKey == null || this.secretKey == null)) {
      throw new IllegalArgumentException("Access key and secret key are required to subscribe order feed and account info.");
    }

    final Socket socket;
    try {
      socket = IO.socket(uri, opt);
    } catch (URISyntaxException e) {
      throw new IllegalArgumentException(e);
    }

    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        subscribeMarketData();
        subscribeGrouporder();
        subscribePrivateData();
      }

      private void subscribeMarketData() {

        subscribe("marketdata", marketData);
      }

      private void subscribeGrouporder() {

        subscribe("grouporder", grouporder);
      }

      private void subscribe(String name, Iterable<CurrencyPair> currencyPairs) {

        for (CurrencyPair currencyPair : currencyPairs) {
          String market = toMarket(currencyPair);
          String subscribeData = String.format("%s_%s", name, market);
          log.debug("subscribing {}", subscribeData);
          socket.emit("subscribe", subscribeData);
        }
      }

      private void subscribePrivateData() {

        final List<String> params = buildPrivateDataParams();

        if (!params.isEmpty()) {
          BTCChinaPayload payload = getPayload(params.toArray(new String[0]));

          final List<String> arg = new ArrayList<String>(2);
          arg.add(toPostData(payload));
          arg.add(getSign(payload));

          // Use 'private' method to subscribe the order feed
          socket.emit("private", arg);
        } else {
          log.debug("No private data specified to subscribe.");
        }
      }

      private List<String> buildPrivateDataParams() {

        int capacity = orderFeed.size() + (subscribeAccountInfo ? 1 : 0);
        final List<String> params = new ArrayList<String>(capacity);

        for (CurrencyPair currencyPair : orderFeed) {
          final String market = toMarket(currencyPair);
          params.add("order_" + market);
          log.debug("subscribing order feed {}.", market);
        }

        if (subscribeAccountInfo) {
          params.add("account_info");
          log.debug("subscribing account info.");
        }

        return params;
      }

    });

    return socket;
  }
 
Example 18
Project: XChange   File: BTCChinaSocketIOService.java View source codeVote up5 votes
private void listen() {

    socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        log.debug("connected");
        webSocketStatus = READYSTATE.OPEN;
        putEvent(ExchangeEventType.CONNECT);
      }
    }).on(EVENT_TRADE, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        // receive the trade message
        JSONObject json = (JSONObject) args[0];
        log.debug("{}: {}", EVENT_TRADE, json);
        putEvent(ExchangeEventType.TRADE, json, BTCChinaJSONObjectAdapters.adaptTrade(json));
      }
    }).on(EVENT_TICKER, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        // receive the ticker message
        JSONObject json = (JSONObject) args[0];
        log.debug("{}: {}", EVENT_TICKER, json);
        putEvent(ExchangeEventType.TICKER, json, BTCChinaJSONObjectAdapters.adaptTicker(json));
      }
    }).on(EVENT_GROUPORDER, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        // receive the market depth feed
        JSONObject json = (JSONObject) args[0];
        log.debug("{}: {}", EVENT_GROUPORDER, json);
        putEvent(ExchangeEventType.DEPTH, json, BTCChinaJSONObjectAdapters.adaptDepth(json));
      }
    }).on(EVENT_ORDER, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        // receive your order feed
        JSONObject json = (JSONObject) args[0];
        log.debug("{}: {}", EVENT_ORDER, json);
        putEvent(ExchangeEventType.USER_ORDER, json, BTCChinaJSONObjectAdapters.adaptOrder(json));
      }
    }).on(EVENT_ACCOUNT_INFO, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        // receive account balance changes
        JSONObject json = (JSONObject) args[0];
        log.debug("{}: {}", EVENT_ACCOUNT_INFO, json);
        putEvent(ExchangeEventType.USER_WALLET, json, BTCChinaJSONObjectAdapters.adaptBalance(json));
      }
    }).on(Socket.EVENT_RECONNECTING, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        log.debug("reconnecting");
        webSocketStatus = READYSTATE.CONNECTING;
      }
    }).on(Socket.EVENT_DISCONNECT, new Emitter.Listener() {

      @Override
      public void call(Object... args) {

        log.debug("disconnected");
        webSocketStatus = READYSTATE.CLOSED;
        putEvent(ExchangeEventType.DISCONNECT);
      }
    });
  }
 
Example 19
Project: PalaverAndroidClient   File: ChatActivity.java View source codeVote up5 votes
@Override
protected void onCreate(Bundle savedInstanceState) {
    //
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);


    mDataStore = DataStore.get(this);

    // Server socket
    mSocket.on(Socket.EVENT_ERROR, onError);
    mSocket.on(Socket.EVENT_DISCONNECT, onDisconnect);
    mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
    mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
    mSocket.on(Socket.EVENT_RECONNECT_ATTEMPT, onReconnectAttempt);
    mSocket.on("receiveUserMetadata", onConnectMetadata);
    mSocket.on("message", onMessageRecieved);;
    mSocket.connect();

    mActionbar = (Toolbar) findViewById(R.id.tool_bar);
    setSupportActionBar(mActionbar);

    mMessageText = (EditText)findViewById(R.id.message_text);

    mMessageList = (RecyclerView)findViewById(R.id.message_view);
    mMessagesLayoutManager = new LinearLayoutManager(this);
    mMessagesLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    mMessageList.setLayoutManager(mMessagesLayoutManager);

    mTextAdapter = new TextMessageAdapter(getApplicationContext());
    mMessageList.setAdapter(mTextAdapter);

    //this handles creation of the drawer
    mDrawer = (DrawerLayout)findViewById(R.id.drawer_layout);
    mDrawerToggle = new ActionBarDrawerToggle(this, mDrawer, mActionbar, R.string.open_drawer, R.string.close_drawer) {
        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            // code here will execute once the drawer is opened
        }

        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
            // Code here will execute once drawer is closed
        }
    };

    mSendMessageButton = (ImageButton)findViewById(R.id.send_message_text);
    mSendMessageButton.setColorFilter(Color.YELLOW);
    mSendMessageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            String m = mMessageText.getText().toString();

            if (TextUtils.isEmpty(m) || mCurrentRoom == null) {
                return;
            } else {
                attemptSendMessage(m);
            }
        }
    });


    mCurrentRoom = null;
    mRoomData = new ArrayList<RoomInfo>();
    mRoomAdapter= new RoomAdapter(this, R.id.rowText, mRoomData);
    mRooms = (ListView)findViewById(R.id.drawer_list_view);
    mRooms.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            TextView t = (TextView) view.findViewById(R.id.rowText);

            //Save messages for the current room
            saveMessages();

            // Clear messages and set current room
            mCurrentRoom = t.getText().toString();
            mCurrentRoomIndex = position;
            mTextAdapter.clearMessages();

            // Connect to room
            attemptJoinRoom(t.getText().toString());
            loadMessages(mCurrentRoom);
            mActionbar.setTitle(mCurrentRoom);

            mDrawer.closeDrawer(GravityCompat.START);
        }
    });
    mRooms.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
        @Override
        public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
            TextView t = (TextView) view.findViewById(R.id.rowText);
            attemptLeaveRoom(t.getText().toString(), position);

            return true;
        }
    });
    mRooms.setAdapter(mRoomAdapter);

    mAddRoom = (TextView)findViewById(R.id.add_room_button);
    mAddRoom.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(mCtx, AddRoomActivity.class);
            startActivityForResult(i, ADD_ROOM_REQUEST_CODE);
        }
    });

    // Load in data from previous sessions
    loadRooms();
}
 
Example 20
Project: Spika-Android   File: ChatActivity.java View source codeVote up5 votes
/**
 * connect to socket
 */
private void connectToSocket(){

    try {

        IO.Options opts = new IO.Options();
        opts.forceNew = true;
        mSocket = IO.socket(SpikaApp.getConfig().socketUrl, opts);
        mSocket.connect();

    } catch (URISyntaxException e) {
        e.printStackTrace();
        socketFailedDialog();
        return;
    }

    loginWithSocket();

    mSocket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            LogCS.w("LOG", "CONNECTED TO SOCKET");
        }
    });

    mSocket.on(Socket.EVENT_CONNECT_ERROR, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            socketFailedDialog();
        }
    });

    mSocket.on(Socket.EVENT_ERROR, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            socketFailedDialog();
        }
    });

    mSocket.on(Socket.EVENT_CONNECT_TIMEOUT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            socketFailedDialog();
        }
    });

    mSocket.on(Const.EmitKeyWord.NEW_USER, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            Log.w("LOG", "new user, args" + args[0].toString());
        }
    });

    mSocket.on(Const.EmitKeyWord.USER_LEFT, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            String userLeft = args[0].toString();
            ObjectMapper mapper = new ObjectMapper();
            try {
                User user = mapper.readValue(userLeft, User.class);
                onUserLeft(user);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });

    mSocket.on(Const.EmitKeyWord.SEND_TYPING, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            String sendTyping = args[0].toString();
            ObjectMapper mapper = new ObjectMapper();
            try {
                SendTyping typing = mapper.readValue(sendTyping, SendTyping.class);
                onTyping(typing);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });

    mSocket.on(Const.EmitKeyWord.NEW_MESSAGE, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            String newMessage = args[0].toString();
            ObjectMapper mapper = new ObjectMapper();
            try {
                Message message = mapper.readValue(newMessage, Message.class);
                onMessageReceived(message);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });

    mSocket.on(Const.EmitKeyWord.MESSAGE_UPDATED, new Emitter.Listener() {
        @Override
        public void call(Object... args) {
            String newMessage = args[0].toString();
            ObjectMapper mapper = new ObjectMapper();
            try {
                List<Message> messages = mapper.readValue(newMessage, mapper.getTypeFactory().constructCollectionType(List.class, Message.class));
                onMessagesUpdated(messages);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });

    //progress is visible, and it is showed in login method
    doNotShowProgressNow = true;
    boolean isInit = true; String lastMessageId = null;
    getMessages(isInit, lastMessageId);

}
 


반응형