Khởi tạo Websocket trong Java

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 FileNew Project… rồi chọn mục Java Web > Web Application và nhấn Next để qua bước kế tiếp.

Khởi tạo Websocket trong Java

Bạn đặt tên Project, đường dẫn lưu trữ sau đó nhấn Next để qua bước kế tiếp.

Khởi tạo Websocket trong Java

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.

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)

Bình luận