Last active
December 15, 2015 19:19
-
-
Save jfarcand/5310813 to your computer and use it in GitHub Desktop.
wAsync Android Client to Node.js
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class wAsyncChat extends Activity { | |
private Button bt; | |
private TextView tv; | |
private String serverIpAddress = "http://10.0.2.2:8080"; | |
private final static ObjectMapper mapper = new ObjectMapper(); | |
private final Handler uiHandler = new Handler(); | |
@Override | |
public void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
StrictMode.ThreadPolicy policy = | |
new StrictMode.ThreadPolicy.Builder().permitAll().build(); | |
StrictMode.setThreadPolicy(policy); | |
setContentView(R.layout.main); | |
bt = (Button) findViewById(R.id.myButton); | |
tv = (TextView) findViewById(R.id.myTextView); | |
try { | |
Client client = ClientFactory.getDefault().newClient(); | |
RequestBuilder request = client.newRequestBuilder() | |
.method(Request.METHOD.GET) | |
.uri(serverIpAddress) | |
.encoder(new Encoder<Data, String>() { | |
@Override | |
public String encode(Data data) { | |
try { | |
return mapper.writeValueAsString(data); | |
} catch (IOException e) { | |
throw new RuntimeException(e); | |
} | |
} | |
}) | |
.decoder(new Decoder<String, Data>() { | |
@Override | |
public Data decode(Transport.EVENT_TYPE type, | |
String data) { | |
data = data.trim(); | |
// Padding | |
if (data.length() == 0) { | |
return null; | |
} | |
if (type.equals(Transport.EVENT_TYPE.MESSAGE)) { | |
try { | |
return mapper.readValue(data, Data.class); | |
} catch (IOException e) { | |
e.printStackTrace(); | |
return null; | |
} | |
} else { | |
return null; | |
} | |
} | |
}) | |
.transport(Request.TRANSPORT.WEBSOCKET); | |
final org.atmosphere.wasync.Socket socket = client.create(); | |
socket.on("message", new Function<Data>() { | |
@Override | |
public void on(final Data t) { | |
uiHandler.post(new Runnable() { | |
@Override | |
public void run() { | |
Date d = new Date(t.getTime()); | |
tv.append("Author " + t.getAuthor() + "@ " | |
+ d.getHours() + ":" + d.getMinutes() + ": " | |
+ t.getMessage() + "\n"); | |
} | |
}); | |
} | |
}).on(new Function<Throwable>() { | |
@Override | |
public void on(Throwable t) { | |
tv.setText("ERROR 3: " + t.getMessage()); | |
t.printStackTrace(); | |
} | |
}).open(request.build()); | |
bt.setOnClickListener(new OnClickListener() { | |
String name = null; | |
public void onClick(View v) { | |
try { | |
EditText et = (EditText) findViewById(R.id.EditText01); | |
String str = et.getText().toString(); | |
if (name == null) { | |
name = str; | |
} | |
socket.fire(new Data(name, str)); | |
et.setText(""); | |
Log.d("Client", "Client sent message"); | |
} catch (Throwable e) { | |
tv.setText("ERROR " + e.getMessage()); | |
e.printStackTrace(); | |
} | |
} | |
}); | |
} catch (Throwable e) { | |
tv.setText("Unable to connect: " + e.getMessage()); | |
e.printStackTrace(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment