Skip to content

Instantly share code, notes, and snippets.

@jfarcand
Last active December 15, 2015 19:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jfarcand/5310813 to your computer and use it in GitHub Desktop.
Save jfarcand/5310813 to your computer and use it in GitHub Desktop.
wAsync Android Client to Node.js
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