все бы хорошо, но проблема в том, что при двунаправленном канале получается, что все события в том числе возвращаются отправителю. Можно ли этого как-то избежать?
Пока ограничился тем, что просто вставил там фильтр (спасибо @why_oleg за то, что учел в API результат дискуссий и добавили initPayload).
не только я принимал решение, но да, без этого очень сложно из котлина юзать requestChannel 🙁
Потому, что сложно отщепить один элемент?
все решения выглядят не очень котлин-way, либо через канал, что тоже не очень котлин-way
Не, там не сложно на самом деле, делается специальный объект типа flow с дополительным suspend fun first(), но не сказал бы, что это красиво
да, проблемы написать это нет, проблема в том, что выглядит не очень
о, сериализация я в процессе написания обёртки для rSocket и спользованием kotlinx.serialization что бы код, что вот там, выглядит был примерно вот так: ``` requestStream(MagixMessageFilter.serializer(), genericMessageSerializer) { filter -> magixFlow.filter(filter) } fireAndForget(genericMessageSerializer) { message -> magixFlow.emit(message) } // bi-directional connection requestChannel(genericMessageSerializer, genericMessageSerializer) { input -> input.onEach { magixFlow.emit(it) }.launchIn(this@magixAcceptor) magixFlow } ``` stay tuned 🙂 как будет что-то рабочее где-то в ветке, могу написать
Ага, это здорово. Хотя не критично, потому что это ровно одно место, и там можно и руками прописать.
понимаю там конечно чуть по больше всего будет (и сервер, и клиент) так что если сервер/клиент строится по верх рсокет с роутингом там, или ещё чем, то будет приятнее делать это
Обсуждают сегодня