, поэтому я недавно использовал алый WebSocket для успешной отправки данных на свой сервер онлайн, но проблема в том, что я должен получить ответ от сервера, но ничего не получаю.
ниже мой код:
class MainActivity : AppCompatActivity() {
@SuppressLint("CheckResult")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val socketInit = ServerClass(application)
socketInit.socket.observeWebSocketEvent()
.filter { it is WebSocket.Event.OnConnectionOpened<*> }
.subscribe({
val data = "{ \"lat\": 40.5555555555, \"lng\": 37.55564555554545, \"userId\": 2}"
val send = LocationAction(data =data)
socketInit.socket.subscribe(send)
Log.d("TAG_SUB",send.toString())
},{
Log.e("TAG", "Error while observing socket ${it.cause}")
})
socketInit.socket.observeTicker().subscribe({
idText.text =it
Log.d("TAG", "Observed: $it")
},
{
Log.e("TAG", "Error while observing ticker ${it.cause}")
})
}
}
вот мой интерфейс
interface SocketService {
@Receive
fun observeWebSocketEvent(): Flowable<WebSocket.Event>
@Send
fun subscribe(action: LocationAction)
@Receive
fun observeTicker(): Flowable<String>
}
этот класс ниже содержит мою алую реализацию и URL моего сокета
class ServerClass(application: Application): MainApplication() {
private val lifecycle = AndroidLifecycle.ofApplicationForeground(application = application)
private val backoffStrategy = ExponentialWithJitterBackoffStrategy(5000, 5000)
private val okHttpClient = OkHttpClient.Builder()
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build()
val socket = Scarlet.Builder()
.webSocketFactory(okHttpClient.newWebSocketFactory("https://staging.kross.app/api/v1/notification/update"))
.addMessageAdapterFactory(MoshiMessageAdapter.Factory())
.addStreamAdapterFactory(RxJava2StreamAdapterFactory())
.backoffStrategy(backoffStrategy)
.lifecycle(lifecycle)
.build()
.create<SocketService>()
}
Функция наблюдателя должна быть там, где я ожидаю ответа от сервера, но ничего не происходит. Пожалуйста, мне нужна помощь