I/O متوسط

استخدم عميل WebSocket القياسي غير المتزامن بدلاً من إضافة تبعية خارجية.

✕ Third-party library
WebSocketClient client =
    new WebSocketClient(serverUri) {
        @Override
        public void onMessage(String message) {
            handle(message);
        }
    };
client.connect();
✓ Java 11+
HttpClient.newHttpClient()
    .newWebSocketBuilder()
    .buildAsync(serverUri,
        new WebSocket.Listener() {
            @Override
            public CompletionStage<?> onText(
                    WebSocket socket,
                    CharSequence data,
                    boolean last) {
                handle(data.toString());
                return WebSocket.Listener.super
                    .onText(socket, data, last);
            }
        });
هل ترى مشكلة في هذا الكود؟ أخبرنا.
📦

لا تبعية إضافية

يأتي عميل WebSocket مضمّناً مع JDK.

🧵

واجهة برمجية غير متزامنة

يتكامل إنشاء الاتصال ومعالجة الرسائل مع CompletionStage.

🔗

مكدس HTTP مشترك

تستخدم تهيئة الوكيل وTLS والمنفّذ إمكانات JDK القياسية.

الأسلوب القديم
عميل WebSocket من جهة خارجية
الأسلوب الحديث
java.net.http.WebSocket
منذ JDK
11
الصعوبة
متوسط
عملاء WebSocket باستخدام java.net.http
متاح

متاح على نطاق واسع منذ JDK 11 (سبتمبر 2018)

تتضمن حزمة java.net.http عميل WebSocket غير متزامن ومتكاملاً مع عميل HTTP القياسي. تُنشأ الاتصالات باستخدام CompletableFuture، وتدعم استدعاءات المستمع معالجة الرسائل دون حجب عبر CompletionStage، ويشترك العميل في تهيئة الوكيل وTLS والمنفّذ القياسية في JDK.