Updated on 2026-08-14

This commit is contained in:
Tangem 2018-08-17 23:47:12 +03:00
parent 8683cc5eab
commit 08f641216f
10 changed files with 92 additions and 130 deletions

View file

@ -59,5 +59,7 @@ dependencies {
implementation 'org.bitcoinj:bitcoinj-core:0.14.4'
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
implementation 'info.hoang8f:android-segmented:1.0.6'
implementation 'com.squareup.okhttp3:okhttp:3.7.0'
implementation 'io.reactivex.rxjava2:rxjava:2.2.0'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'io.reactivex.rxjava2:rxkotlin:2.3.0'
}

View file

@ -20,8 +20,8 @@ public class ElectrumRequest {
public JSONObject jsRequestData;
public String answerData;
public String error;
public String WalletAddress;
public String TxHash;
public String walletAddress;
public String txHash;
public String TX;
public String Host;
public int Port;
@ -71,10 +71,10 @@ public class ElectrumRequest {
}
}
public static ElectrumRequest CheckBalance(String wallet) {
public static ElectrumRequest checkBalance(String wallet) {
ElectrumRequest request = new ElectrumRequest();
try {
request.WalletAddress=wallet;
request.walletAddress = wallet;
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetBalance + "\", \"params\":[\"" + wallet + "\"] }");
} catch (JSONException e) {
e.printStackTrace();
@ -84,24 +84,22 @@ public class ElectrumRequest {
}
public static ElectrumRequest GetFee(String wallet) {
public static ElectrumRequest getFee(String wallet) {
ElectrumRequest request = new ElectrumRequest();
try{
request.WalletAddress = wallet; //METHOD_GetFee
try {
request.walletAddress = wallet; //METHOD_GetFee
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetFee + "\", \"params\":[\"" + 6 + "\"] }");
}
catch(JSONException e)
{
} catch (JSONException e) {
e.printStackTrace();
request.error = e.toString();
}
return request;
}
public static ElectrumRequest GetHeader(String wallet, String height) {
public static ElectrumRequest getHeader(String wallet, String height) {
ElectrumRequest request = new ElectrumRequest();
try {
request.WalletAddress=wallet;
request.walletAddress = wallet;
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetHeader + "\", \"params\":[\"" + height + "\"] }");
} catch (JSONException e) {
e.printStackTrace();
@ -110,10 +108,10 @@ public class ElectrumRequest {
return request;
}
public static ElectrumRequest ListUnspent(String wallet) {
public static ElectrumRequest listUnspent(String wallet) {
ElectrumRequest request = new ElectrumRequest();
try {
request.WalletAddress=wallet;
request.walletAddress = wallet;
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_ListUnspent + "\", \"params\":[\"" + wallet + "\"] }");
} catch (JSONException e) {
e.printStackTrace();
@ -122,11 +120,11 @@ public class ElectrumRequest {
return request;
}
public static ElectrumRequest Broadcast(String wallet, String tx) {
public static ElectrumRequest broadcast(String wallet, String tx) {
ElectrumRequest request = new ElectrumRequest();
try {
request.WalletAddress=wallet;
request.TX=tx;
request.walletAddress = wallet;
request.TX = tx;
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_SendTransaction + "\", \"params\":[\"" + tx + "\"] }");
} catch (JSONException e) {
e.printStackTrace();
@ -135,10 +133,10 @@ public class ElectrumRequest {
return request;
}
public static ElectrumRequest ListHistory(String wallet) {
public static ElectrumRequest listHistory(String wallet) {
ElectrumRequest request = new ElectrumRequest();
try {
request.WalletAddress=wallet;
request.walletAddress = wallet;
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetHistory + "\", \"params\":[\"" + wallet + "\"] }");
} catch (JSONException e) {
e.printStackTrace();
@ -147,11 +145,11 @@ public class ElectrumRequest {
return request;
}
public static ElectrumRequest GetTransaction(String wallet, String tx_hash) {
public static ElectrumRequest getTransaction(String wallet, String tx_hash) {
ElectrumRequest request = new ElectrumRequest();
try {
request.WalletAddress=wallet;
request.TxHash = tx_hash;
request.walletAddress = wallet;
request.txHash = tx_hash;
request.jsRequestData = new JSONObject("{ \"method\":\"" + METHOD_GetTransaction + "\", \"params\":[\"" + tx_hash + "\"] }");
} catch (JSONException e) {
e.printStackTrace();
@ -180,5 +178,4 @@ public class ElectrumRequest {
return getAnswer().getJSONArray("result");
}
}
}

View file

@ -15,6 +15,7 @@ import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
@ -50,9 +51,10 @@ public class ElectrumTask extends AsyncTask<ElectrumRequest, Integer, List<Elect
@Override
protected List<ElectrumRequest> doInBackground(ElectrumRequest... requests) {
List<ElectrumRequest> result = new ArrayList<>();
for (int i = 0; i < requests.length; i++) {
result.add(requests[i]);
}
// for (int i = 0; i < requests.length; i++) {
// result.add(requests[i]);
// }
Collections.addAll(result, requests);
try {
InetAddress serverAddress = InetAddress.getByName(Host);
Log.v(logTag, "Connecting..." + Host);

View file

@ -63,13 +63,13 @@ public class UpdateWalletInfoTask extends ElectrumTask {
for (ElectrumRequest request : requests) {
try {
if (request.error == null) {
// get balance
if (request.isMethod(ElectrumRequest.METHOD_GetBalance)) {
try {
String mWalletAddress = request.getParams().getString(0);
String walletAddress = request.getParams().getString(0);
Long confBalance = request.getResult().getLong("confirmed");
Long unconf = request.getResult().getLong("unconfirmed");
Long unconfirmedBalance = request.getResult().getLong("unconfirmed");
loadedWallet.getCard().setBalanceReceived(true);
if (sharedCounter != null) {
boolean notEqualBalance = sharedCounter.updatePayload(new BigDecimal(String.valueOf(confBalance)));
if (notEqualBalance)
@ -79,11 +79,9 @@ public class UpdateWalletInfoTask extends ElectrumTask {
continue;
}
}
loadedWallet.getCard().setBalanceConfirmed(confBalance);
loadedWallet.getCard().setBalanceUnconfirmed(unconf);
loadedWallet.getCard().setBalanceUnconfirmed(unconfirmedBalance);
loadedWallet.getCard().setDecimalBalance(String.valueOf(confBalance));
loadedWallet.getCard().setValidationNodeDescription(getValidationNodeDescription());
} catch (JSONException e) {
if (sharedCounter != null) {
@ -98,32 +96,33 @@ public class UpdateWalletInfoTask extends ElectrumTask {
engine.switchNode(loadedWallet.getCard());
}
}
} else if (request.isMethod(ElectrumRequest.METHOD_SendTransaction)) {
}
// send transaction
else if (request.isMethod(ElectrumRequest.METHOD_SendTransaction)) {
try {
String hashTX = request.getResultString();
try {
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), hashTX);
if (hashTX.startsWith("0x") || hashTX.startsWith("0X")) {
if (hashTX.startsWith("0x") || hashTX.startsWith("0X"))
hashTX = hashTX.substring(2);
}
BigInteger bigInt = new BigInteger(hashTX, 16); //TODO: очень плохой способ
LastSignStorage.setTxWasSend(loadedWallet.getCard().getWallet());
LastSignStorage.setLastMessage(loadedWallet.getCard().getWallet(), "");
// Log.e("TX_RESULT", hashTX);
} catch (Exception e) {
engine.switchNode(loadedWallet.getCard());
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
} else if (request.isMethod(ElectrumRequest.METHOD_ListUnspent)) {
}
// list unspent
else if (request.isMethod(ElectrumRequest.METHOD_ListUnspent)) {
try {
String mWalletAddress = request.getParams().getString(0);
JSONArray jsUnspentArray = request.getResultArray();
try {
loadedWallet.getCard().getUnspentTransactions().clear();
@ -148,21 +147,20 @@ public class UpdateWalletInfoTask extends ElectrumTask {
String nodeAddress = engine.getNextNode(loadedWallet.getCard());
int nodePort = engine.getNextNodePort(loadedWallet.getCard());
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(loadedWallet, nodeAddress, nodePort);
// loadedWallet.updateTasks.add(updateWalletInfoTask);
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.GetHeader(mWalletAddress, String.valueOf(height)),
ElectrumRequest.GetTransaction(mWalletAddress, hash));
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getHeader(mWalletAddress, String.valueOf(height)), ElectrumRequest.getTransaction(mWalletAddress, hash));
}
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
} else if (request.isMethod(ElectrumRequest.METHOD_GetHistory)) {
}
// get history
else if (request.isMethod(ElectrumRequest.METHOD_GetHistory)) {
try {
String mWalletAddress = request.getParams().getString(0);
JSONArray jsHistoryArray = request.getResultArray();
try {
loadedWallet.getCard().getHistoryTransactions().clear();
@ -183,22 +181,21 @@ public class UpdateWalletInfoTask extends ElectrumTask {
Integer height = jsUnspent.getInt("height");
String hash = jsUnspent.getString("tx_hash");
if (height != -1) {
String nodeAddress = engine.getNode(loadedWallet.getCard());
int nodePort = engine.getNodePort(loadedWallet.getCard());
UpdateWalletInfoTask updateWalletInfoTask = new UpdateWalletInfoTask(loadedWallet, nodeAddress, nodePort);
// loadedWallet.updateTasks.add(updateWalletInfoTask);
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.GetHeader(mWalletAddress, String.valueOf(height)),
ElectrumRequest.GetTransaction(mWalletAddress, hash));
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.getHeader(mWalletAddress, String.valueOf(height)), ElectrumRequest.getTransaction(mWalletAddress, hash));
}
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
} else if (request.isMethod(ElectrumRequest.METHOD_GetHeader)) {
}
// get header
else if (request.isMethod(ElectrumRequest.METHOD_GetHeader)) {
try {
JSONObject jsHeader = request.getResult();
try {
@ -208,24 +205,22 @@ public class UpdateWalletInfoTask extends ElectrumTask {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
} else if (request.isMethod(ElectrumRequest.METHOD_GetTransaction)) {
}
// get transaction
else if (request.isMethod(ElectrumRequest.METHOD_GetTransaction)) {
try {
String txHash = request.TxHash;
String txHash = request.txHash;
String raw = request.getResultString();
List<TangemCard.UnspentTransaction> listTx = loadedWallet.getCard().getUnspentTransactions();
for (TangemCard.UnspentTransaction tx : listTx) {
if (tx.txID.equals(txHash))
tx.Raw = raw;
}
List<TangemCard.HistoryTransaction> listHTx = loadedWallet.getCard().getHistoryTransactions();
for (TangemCard.HistoryTransaction tx : listHTx) {
if (tx.txID.equals(txHash)) {
@ -240,7 +235,6 @@ public class UpdateWalletInfoTask extends ElectrumTask {
isOur = true;
}
}
tx.isInput = !isOur;
} catch (BitcoinException e) {
e.printStackTrace();
@ -248,32 +242,28 @@ public class UpdateWalletInfoTask extends ElectrumTask {
// Log.e("TX", raw);
}
}
} catch (JSONException e) {
e.printStackTrace();
engine.switchNode(loadedWallet.getCard());
}
}
loadedWallet.updateViews();
} else {
if (sharedCounter != null) {
int errCounter = sharedCounter.errorRequest.incrementAndGet();
loadedWallet.getCard().incFailedBalanceRequestCounter();
if (errCounter >= sharedCounter.allRequest) {
if (errCounter >= sharedCounter.allRequest)
engine.switchNode(loadedWallet.getCard());
}
} else {
} else
engine.switchNode(loadedWallet.getCard());
}
}
} catch (JSONException e) {
if (sharedCounter != null) {
int errCounter = sharedCounter.errorRequest.incrementAndGet();
loadedWallet.getCard().incFailedBalanceRequestCounter();
if (errCounter >= sharedCounter.allRequest) {
if (errCounter >= sharedCounter.allRequest)
e.printStackTrace();
}
} else {
e.printStackTrace();
}
@ -284,10 +274,8 @@ public class UpdateWalletInfoTask extends ElectrumTask {
} catch (NullPointerException e) {
e.printStackTrace();
if (reference.get() != null) {
if (reference.get() != null)
reference.get().getSrlLoadedWallet().setRefreshing(false);
}
}
}

View file

@ -35,12 +35,12 @@ public class ConnectTask extends ElectrumTask {
String nodeAddress = engine.getNode(mCard);
int nodePort = engine.getNodePort(mCard);
ConnectTask connectTask = new ConnectTask(reference.get(), nodeAddress, nodePort, remaining_attempts);
connectTask.execute(ElectrumRequest.Broadcast(mCard.getWallet(), tx));
connectTask.execute(ElectrumRequest.broadcast(mCard.getWallet(), tx));
} else if (mCard.getBlockchain() == Blockchain.BitcoinCash || mCard.getBlockchain() == Blockchain.BitcoinCashTestNet) {
String nodeAddress = engine.getNode(mCard);
int nodePort = engine.getNodePort(mCard);
ConnectTask connectTask = new ConnectTask(reference.get(), nodeAddress, nodePort, remaining_attempts);
connectTask.execute(ElectrumRequest.Broadcast(mCard.getWallet(), tx));
connectTask.execute(ElectrumRequest.broadcast(mCard.getWallet(), tx));
}
} else {

View file

@ -12,7 +12,7 @@ public class SharedData {
public AtomicInteger requestCounter;
public int allRequest;
public AtomicInteger errorRequest;
public BigDecimal payload;
private BigDecimal payload;
public SharedData(int requestCount) {
payload = BigDecimal.ZERO;
@ -24,9 +24,9 @@ public class SharedData {
public synchronized boolean updatePayload(BigDecimal value) {
if (payload == null || payload.compareTo(value) != 0) {
boolean isChange = true;
if (payload == null || payload == BigDecimal.ZERO)
if (payload == null || payload.equals(BigDecimal.ZERO))
isChange = false;
if (value != BigDecimal.ZERO)
if (!value.equals(BigDecimal.ZERO))
payload = value;
else
isChange = false;

View file

@ -188,7 +188,7 @@ class ConfirmPaymentActivity : AppCompatActivity(), NfcAdapter.ReaderCallback {
val nodeAddress = engineCoin!!.getNextNode(card)
val nodePort = engineCoin.getNextNodePort(card)
val connectTaskEx = ConnectTask(this@ConfirmPaymentActivity, nodeAddress, nodePort, data)
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(card!!.wallet))
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.checkBalance(card!!.wallet))
}
var calcSize = 256

View file

@ -46,12 +46,12 @@ class SendTransactionActivity : AppCompatActivity() {
val nodeAddress = engine!!.getNode(card)
val nodePort = engine.getNodePort(card)
val connectTask = ConnectTask(this@SendTransactionActivity, nodeAddress, nodePort, 3)
connectTask.execute(ElectrumRequest.Broadcast(card!!.wallet, tx))
connectTask.execute(ElectrumRequest.broadcast(card!!.wallet, tx))
} else if (card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) {
val nodeAddress = engine!!.getNode(card)
val nodePort = engine.getNodePort(card)
val connectTask = ConnectTask(this@SendTransactionActivity, nodeAddress, nodePort, 3)
connectTask.execute(ElectrumRequest.Broadcast(card!!.wallet, tx))
connectTask.execute(ElectrumRequest.broadcast(card!!.wallet, tx))
}
}

View file

@ -44,9 +44,6 @@ import com.tangem.util.Util
import com.tangem.util.UtilHelper
import com.tangem.wallet.R
import kotlinx.android.synthetic.main.fr_loaded_wallet.*
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.WebSocket
import java.util.*
class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notifications, VolleyHelper.IRequestCardVerify, SharedPreferences.OnSharedPreferenceChangeListener {
@ -573,6 +570,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
requestVerify()
// Bitcoin
if (card!!.blockchain == Blockchain.Bitcoin || card!!.blockchain == Blockchain.BitcoinTestNet) {
val data = SharedData(SharedData.COUNT_REQUEST)
card!!.resetFailedBalanceRequestCounter()
@ -582,36 +580,27 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
val nodeAddress = engine!!.getNextNode(card)
val nodePort = engine.getNextNodePort(card)
Log.i(TAG, nodeAddress)
Log.i(TAG, nodePort.toString())
Log.i(TAG, i.toString())
// check balance
val connectTaskEx = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort, data)
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(card!!.wallet))
Log.i("effefefe23", nodeAddress)
Log.i("effefefe23", nodePort.toString())
val client = OkHttpClient.Builder().build()
val request = Request.Builder()
.url("ws://btc.cihar.com:50001")
.build()
val wsc = WebSocketClass()
val ws = client.newWebSocket(request, wsc)
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.checkBalance(card!!.wallet))
// list unspent input
val updateWalletInfoTask = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort, data)
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(card!!.wallet))
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.listUnspent(card!!.wallet))
}
// course request
val taskRate = RateInfoTask(this@LoadedWallet)
val rate = ExchangeRequest.GetRate(card!!.wallet, "bitcoin", "bitcoin")
taskRate.execute(rate)
}
} else if (card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) {
// BitcoinCash
else if (card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) {
card!!.resetFailedBalanceRequestCounter()
val data = SharedData(SharedData.COUNT_REQUEST)
card!!.setIsBalanceEqual(true)
@ -621,7 +610,7 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// check balance
val connectTaskEx = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort, data)
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.CheckBalance(card!!.wallet))
connectTaskEx.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.checkBalance(card!!.wallet))
}
val nodeAddress = engine!!.getNode(card)
@ -629,14 +618,17 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
// list unspent input
val updateWalletInfoTask = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort, data)
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.ListUnspent(card!!.wallet))
updateWalletInfoTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.listUnspent(card!!.wallet))
// course request
val taskRate = RateInfoTask(this@LoadedWallet)
val rate = ExchangeRequest.GetRate(card!!.wallet, "bitcoin-cash", "bitcoin-cash")
taskRate.execute(rate)
} else if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet) {
}
// Ethereum
else if (card!!.blockchain == Blockchain.Ethereum || card!!.blockchain == Blockchain.EthereumTestNet) {
val updateETH = ETHRequestTask(this@LoadedWallet, card!!.blockchain)
val reqETH = InfuraRequest.GetBalance(card!!.wallet)
reqETH.id = 67
@ -653,7 +645,10 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
val rate = ExchangeRequest.GetRate(card!!.wallet, "ethereum", "ethereum")
taskRate.execute(rate)
} else if (card!!.blockchain == Blockchain.Token) {
}
// Token
else if (card!!.blockchain == Blockchain.Token) {
val updateETH = ETHRequestTask(this@LoadedWallet, card!!.blockchain)
val reqETH = InfuraRequest.GetTokenBalance(card!!.wallet, engine!!.getContractAddress(card), engine.getTokenDecimals(card))
reqETH.id = 67
@ -766,13 +761,13 @@ class LoadedWallet : Fragment(), NfcAdapter.ReaderCallback, CardProtocol.Notific
val nodePort = engine.getNodePort(card)
val connectTask = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort)
connectTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.Broadcast(card!!.wallet, tx))
connectTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.broadcast(card!!.wallet, tx))
} else if (card!!.blockchain == Blockchain.BitcoinCash || card!!.blockchain == Blockchain.BitcoinCashTestNet) {
val nodeAddress = engine!!.getNode(card)
val nodePort = engine.getNodePort(card)
val connectTask = UpdateWalletInfoTask(this@LoadedWallet, nodeAddress, nodePort)
connectTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.Broadcast(card!!.wallet, tx))
connectTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, ElectrumRequest.broadcast(card!!.wallet, tx))
}
}

View file

@ -1,22 +0,0 @@
package com.tangem.presentation.fragment;
import android.util.Log;
import okhttp3.Response;
import okhttp3.WebSocket;
import okhttp3.WebSocketListener;
public class WebSocketClass extends WebSocketListener {
@Override
public void onOpen(WebSocket webSocket, Response response) {
webSocket.send("Hello");
Log.i("WS_scsc", "scsc");
}
@Override
public void onMessage(WebSocket webSocket, String text) {
Log.i("WS_scsc", text);
System.out.print(text);
}
}