Websocket là gì? Websocket nhằm trao đổi dữ liệu hai chiều giữa client và server phù hợp cho những ứng dụng yêu cầu thời gian thực (real time). Trong bài viết này chúng ta sẽ khởi tạo WebSocket trong Java bằng cách tạo một ứng dụng giống như trò chuyện (chat).
Ưu điểm của việc sử dụng WebSocket giúp gói tin nhẹ hơn HTTP, giảm độ trễ của mạng và phù hợp với những ứng dụng yêu cầu thời gian thực mà không cần phải gửi nhiều yêu cầu (request) liên tiếp lên server mà server sẽ chủ động gởi gói tin khi có sự thay đổi cho client.
Sau đây là hướng dẫn khởi tạo Websocket trong Java thông qua ví dụ minh họa xây dựng ứng dụng nhắn tin trò chuyện (chat) hỗ trợ nhiều nền tảng như Web, Desktop, Android.
Bước 1: Nếu như bạn sử dụng NetBeans IDE hãy chọn mục File > New Project… rồi chọn mục Java Web > Web Application và nhấn Next để qua bước kế tiếp.
Bạn đặt tên Project, đường dẫn lưu trữ sau đó nhấn Next để qua bước kế tiếp.
Màn hình kế tiếp bạn lựa chọn Server (GlassFish hoặc Tomcat…), phiên bản Java EE sau đó nhấn Finish để hoàn tất quá trình khởi tạo Websocket trong Java.
Bước 2: Khởi tạo ServerEndpoint bằng cách bạn tạo lớp CtrlMsg.java như sau
package controller; import java.util.HashMap; import java.util.Map; import javax.websocket.OnClose; import javax.websocket.OnError; import javax.websocket.OnMessage; import javax.websocket.OnOpen; import javax.websocket.Session; import javax.websocket.server.PathParam; import javax.websocket.server.ServerEndpoint; /** * * @author TVD */ @ServerEndpoint(value = "/chat/{uname}") public class CtrlMsg { private static HashMap<Session, String> hashMap = new HashMap<>(); @OnOpen public void onOpen(Session session, @PathParam("uname") String uname) { hashMap.put(session, uname); } @OnMessage public void onMessage(Session session, String msg) { if (!hashMap.isEmpty()) { sendMsg(session, msg); } } @OnClose public void onClose(Session session) { hashMap.remove(session); } @OnError public void onError(Session session, Throwable throwable) { hashMap.remove(session); } private void sendMsg(Session ss, String msg) { for (Map.Entry<Session, String> entry : hashMap.entrySet()) { try { if (entry.getKey() != ss && entry.getKey().isOpen()) { entry.getKey().getBasicRemote().sendText(msg); } } catch (Exception e) { e.printStackTrace(); } } } }
Trong đó bạn chú ý một số phương thức cơ bản khi khởi tạo Websocket trong Java gồm:
Phương thức | Mô tả |
---|---|
@OnOpen | Được gọi khi thiết lập kết nối. |
@OnMessage | Được gọi khi client nhận dữ liệu từ server hoặc ngược lại. |
@OnError | Được gọi khi có lỗi trong giao tiếp. |
@OnClose | Được gọi khi kết nối được đóng. |
Bước 3: Như vậy chúng ta đã tạo thành công Websocket Java, bây giờ bạn chạy ứng dụng.
Lời kết: Trong thời gian tới Team Việt Dev sẽ tiếp tục chia sẻ thêm nhiều bài viết hữu ích khác đến bạn đọc trong chuyên mục Java, các bạn nhớ theo dõi kênh để có được những chia sẻ mới nhất.
(Tác giả: Team Việt Dev)