반응형
요즘 부쩍 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 code | 6 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 code | 6 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 code | 6 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 code | 6 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 code | 6 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 code | 6 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 code | 6 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 code | 6 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 code | 6 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 code | 6 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 code | 6 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 code | 5 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 code | 5 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 code | 5 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 code | 5 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 code | 5 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 code | 5 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 code | 5 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 code | 5 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 code | 5 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); }
반응형