Quería saber si hay alguna implementación Java de la biblioteca de sockets web Scarlet.
@EchoBotScope @Component(modules = [(EchoBotComponent.EchoBotModule::class)], dependencies = [(EchoBotComponent.Dependency::class)]) interface EchoBotComponent { fun inject(echoBotFragment: EchoBotFragment) interface Dependency { fun application(): Application } @Component.Builder interface Builder { fun dependency(dependency: Dependency): Builder fun build(): EchoBotComponent } @Module class EchoBotModule { @Provides @EchoBotScope fun provideOkHttpClient(): OkHttpClient = OkHttpClient.Builder() .addInterceptor(HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BASIC)) .build() @Provides @EchoBotScope fun provideLifecycle(application: Application, loggedInLifecycle: LoggedInLifecycle): Lifecycle = AndroidLifecycle.ofApplicationForeground(application) .combineWith(loggedInLifecycle) @Provides @EchoBotScope fun provideEchoService(client: OkHttpClient, lifecycle: Lifecycle): EchoService { val scarlet = Scarlet.Builder() .webSocketFactory(client.newWebSocketFactory("wss://demos.kaazing.com/echo")) .lifecycle(lifecycle) .addMessageAdapterFactory(BitmapMessageAdapter.Factory()) .addStreamAdapterFactory(RxJava2StreamAdapterFactory()) .build() return scarlet.create() } } interface ComponentProvider { val echoBotComponent: EchoBotComponent } }¿Cómo puedo personalizar la aplicación de demostración para crear mi propio cliente WebSocket okhttp?
Asumo aquí que desea usar escarlata en un proyecto Java. En primer lugar, la versión que está utilizando está desactualizada. Encuentre la última versión de la biblioteca escarlata aquí . Tiene cambios importantes y deberá migrar su código.
Puede usar la biblioteca scarlet en un proyecto java tal como está sin depender de los módulos específicos de kotlin como scarlet-stream-adapter-coroutines . A continuación se proporciona un ejemplo de implementación de EchoBotModule en Java.
@Module class EchoBotModule { @Provides @EchoBotScope OkHttpClient provideOkHttpClient() { return OkHttpClient.Builder() .addInterceptor(HttpLoggingInterceptor() .setLevel(HttpLoggingInterceptor.Level.BASIC)) .build(); } @Provides @EchoBotScope Lifecycle provideLifecycle(Application application, LoggedInLifecycle loggedInLifecycle) { return AndroidLifecycle.ofApplicationForeground(application) .combineWith(loggedInLifecycle); } @Provides @EchoBotScope EchoService provideEchoService(OkHttpClient client, Lifecycle lifecycle) { Protocol pr = new OkHttpWebSocket(client, new OkHttpWebSocket.SimpleRequestFactory( () -> new Request.Builder().url("wss://demos.kaazing.com/echo").build(), () -> ShutdownReason.GRACEFUL )); List<MessageAdapter.Factory> messageAdapterFactories = Collections.singletonList(new BitmapMessageAdapter.Factory()); List<StreamAdapter.Factory> streamAdapterFactories = Collections.singletonList(new RxJava2StreamAdapterFactory()); Scarlet.Configuration configuration = new Scarlet.Configuration(lifecycle, null, streamAdapterFactories, messageAdapterFactories, false); Scarlet scarlet = new Scarlet(pr, configuration); return scarlet.create(); } }