RSocket هو بروتوكول ثنائي للاستخدام في عمليات نقل دفق البايت مثل TCP وWebSockets وAeron.
إنه يمكّن نماذج التفاعل المتماثل التالية عبر رسالة غير متزامنة تمر عبر اتصال واحد:
تعرف على المزيد على http://rsocket.io
master
مخصص الآن لتطوير خط 1.2.x
الإصدارات والمعالم متاحة عبر Maven Central.
مثال:
repositories {
mavenCentral()
maven { url ' https://repo.spring.io/milestone ' } // Reactor milestones (if needed)
}
dependencies {
implementation ' io.rsocket:rsocket-core:1.2.0-SNAPSHOT '
implementation ' io.rsocket:rsocket-transport-netty:1.2.0-SNAPSHOT '
}
اللقطات متاحة عبر oss.jfrog.org (OJO).
مثال:
repositories {
maven { url ' https://maven.pkg.github.com/rsocket/rsocket-java ' }
maven { url ' https://repo.spring.io/snapshot ' } // Reactor snapshots (if needed)
}
dependencies {
implementation ' io.rsocket:rsocket-core:1.2.0-SNAPSHOT '
implementation ' io.rsocket:rsocket-transport-netty:1.2.0-SNAPSHOT '
}
قم بتثبيت تنسيق google-java في Intellij، من تفضيلات المكونات الإضافية. قم بالتمكين ضمن التفضيلات -> إعدادات أخرى -> إعدادات تنسيق google-java
التنسيق تلقائيًا باستخدام
$./gradlew goJF
يمكن طباعة الإطارات للمساعدة في تصحيح الأخطاء. قم بتعيين المسجل io.rsocket.FrameLogger
لتصحيح الأخطاء لطباعة الإطارات.
package io . rsocket . transport . netty ;
import io . rsocket . Payload ;
import io . rsocket . RSocket ;
import io . rsocket . core . RSocketConnector ;
import io . rsocket . transport . netty . client . WebsocketClientTransport ;
import io . rsocket . util . DefaultPayload ;
import reactor . core . publisher . Flux ;
import java . net . URI ;
public class ExampleClient {
public static void main ( String [] args ) {
WebsocketClientTransport ws = WebsocketClientTransport . create ( URI . create ( "ws://rsocket-demo.herokuapp.com/ws" ));
RSocket clientRSocket = RSocketConnector . connectWith ( ws ). block ();
try {
Flux < Payload > s = clientRSocket . requestStream ( DefaultPayload . create ( "peace" ));
s . take ( 10 ). doOnNext ( p -> System . out . println ( p . getDataUtf8 ())). blockLast ();
} finally {
clientRSocket . dispose ();
}
}
}
بشكل افتراضي، لتسهيل استخدام RSocket، فإنه يقوم بنسخ الحمولة الواردة. نسخ الحمولة يأتي على حساب الأداء ووقت الاستجابة. إذا كنت تريد استخدام النسخة الصفرية، فيجب عليك تعطيل هذا. لتعطيل النسخ، يجب عليك تضمين وسيطة payloadDecoder
في RSocketFactory
الخاص بك. سيتيح لك ذلك إدارة الحمولة دون نسخ البيانات من وسيلة النقل الأساسية. يجب عليك تحرير الحمولة عند الانتهاء منها وإلا فسوف تحصل على تسرب للذاكرة. إذا تم استخدامه بشكل صحيح، فسيؤدي ذلك إلى تقليل زمن الوصول وزيادة الأداء.
RSocketServer . create ( new PingHandler ())
// Enable Zero Copy
. payloadDecoder ( PayloadDecoder . ZERO_COPY )
. bind ( TcpServerTransport . create ( 7878 ))
. block ()
. onClose ()
. block ();
RSocket clientRSocket =
RSocketConnector . create ()
// Enable Zero Copy
. payloadDecoder ( PayloadDecoder . ZERO_COPY )
. connect ( TcpClientTransport . create ( 7878 ))
. block ();
بالنسبة للأخطاء والأسئلة والمناقشات، يرجى استخدام مشكلات Github.
حقوق الطبع والنشر 2015-2020 للمؤلف أو المؤلفين الأصليين.
مرخص بموجب ترخيص Apache، الإصدار 2.0 ("الترخيص")؛ لا يجوز لك استخدام هذا الملف إلا وفقًا للترخيص. يمكنك الحصول على نسخة من الترخيص على
http://www.apache.org/licenses/LICENSE-2.0
ما لم يكن ذلك مطلوبًا بموجب القانون المعمول به أو تم الاتفاق عليه كتابيًا، يتم توزيع البرامج الموزعة بموجب الترخيص على أساس "كما هي"، دون ضمانات أو شروط من أي نوع، سواء كانت صريحة أو ضمنية. راجع الترخيص لمعرفة الأذونات والقيود التي تحكم اللغة المحددة بموجب الترخيص.