Các thư viện cần có:
- Socket.IO-Client for Java-https://github.com/nkzawa/socket.io-client.java
- engine.io-client-0.4.1-https://github.com/nkzawa/engine.io-client.java
- Java-WebSocket-1.3.0-http://mvnrepository.com/artifact/org.java-websocket/Java-WebSocket/1.3.0
- json-20140107 - http://mvnrepository.com/artifact/org.json/json/20140107
Để kết nối đến Nodejs sử dụng:
private Socket mSocket;
{
try {
mSocket = IO.socket("http://chat.socket.io");
} catch (URISyntaxException e) {
throw new RuntimeException(e);
}
}
Để lắng nghe một sự kiện từ phía server ta có thể sử dụng Socket.on:Ở đây ta lắng nghe 2 sự kiện đó là khi connect thành công phía server và error:
mSocket.on(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.on(Socket.EVENT_CONNECT, onConnectSucsses);
onConnectError và onConnectSucsses là hai callback được gọi khi kết nối socket:Socket.EVENT_CONNECT_ERROR là key cần lắng nghe.quy định trên server
private Emitter.Listener onConnectError = new Emitter.Listener() {
@Override
public void call(Object... args) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getActivity().getApplicationContext(),
R.string.error_connect, Toast.LENGTH_LONG).show();
}
});
}
};
private Emitter.Listener onConnectSucsses= new Emitter.Listener() {
@Override
public void call(Object... args) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(getActivity().getApplicationContext(),
R.string.connect, Toast.LENGTH_LONG).show();
}
});
}
};
Sau khi đã lắng nghe 2 sự kiện bạn sử dụng mSocket.connect(); để bắt đầu connect tới phía serverTiếp theo là gửi một message lên server ta sử dụng Socket.emit:
mSocket.emit("new message", message);
Trong đó "new mesage" là key được lắng nghe phía server,message là value.Value có thể là Object nguyên thủy(String,int,..) hoặc là một Object của bạn nhưng chú ý sử dụng JsonObject để gửi lên
Sau khi hoàn thành nhứ đóng kết nối và các sự kiện đang lắng nghe
mSocket.disconnect();
mSocket.off(Socket.EVENT_CONNECT_ERROR, onConnectError);
mSocket.off(Socket.EVENT_CONNECT_TIMEOUT, onConnectError);
mSocket.off("new message", onNewMessage);
0 nhận xét:
Đăng nhận xét