عملاء WebSocket باستخدام java.net.http
استخدم عميل 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
الصعوبة
متوسط
دعم JDK
عملاء WebSocket باستخدام java.net.http
متاح
متاح على نطاق واسع منذ JDK 11 (سبتمبر 2018)
كيف يعمل
تتضمن حزمة java.net.http عميل WebSocket غير متزامن ومتكاملاً مع عميل HTTP القياسي. تُنشأ الاتصالات باستخدام CompletableFuture، وتدعم استدعاءات المستمع معالجة الرسائل دون حجب عبر CompletionStage، ويشترك العميل في تهيئة الوكيل وTLS والمنفّذ القياسية في JDK.
توثيق ذو صلة
إثبات