Претензии понятны, но я не об этом. В рантайм прилетает строка с именем метога и массив с аргументами. Возможно ли вызвать соответствующий метод у объекта по имени и передать ему массив? Хотя бы с анфейфом и грязными хаками. Но без говномакросов и говногенерации
Даже если это можно как-то закостылить в Расте, это не особо идиоматично: предполагается, что ты сначала десериализуешь эту штуку в статически определенную структуру, а уже потом, когда убедился, что тебе прислали не полную фигню, вызываешь нужный метод. Считается, что паранойя - это хорошо.
Смысл rpc - быстро, с минимальной задержкой, параллельно
Насколько я понимаю современный дискурс, HTTP3 таким и будет. По UDP, мультиплексированно, бинарно **е-мое. А websockets, на который ты намекаешь не позвали на этот праздник жизни. Он так и останется одиноко отрытым TCP-сокетом на одно подключение
и, самое главное, в обе стороны
Насколько я понимаю современный дискурс, держать подключение «туды» – моветон, т.к. высаживает батарейку. А удерживать полудуплекс на прием милое дело. Для этого есть SSE
Насколько я понимаю современный дискурс, HTTP3 таким и будет. По UDP, мультиплексированно, бинарно **е-мое.
Говно мусорное для птушников.
А websockets, на который ты намекаешь не позвали на этот праздник жизни.
А это не важно.
Он так и останется одиноко отрытым TCP-сокетом на одно подключение
Не останется - добавят udp-сокет.
Насколько я понимаю современный дискурс, держать подключение «туды» – моветон, т.к. высаживает батарейку.
Полная чушня нелепая. Мало того, что хттп-дерьмо и так его держит, потому как иначе оно бы вообще не шевелилось. К тому же никакое соединение не требует какой-то батарейки.
А удерживать полудуплекс на прием милое дело. Для этого есть SSE
Нет, это проблема tcp-говна. Как только это дерьмо сдохнет - всё уйдёт.
dogRpc['method_name'](...args) - это делается без проблем
Собственно и хотелось бы посмотреть как это делается. в плюсах я не бум-бум. В расте, говорят, нельзя. Суть в том, что rpc-либа отдельно, а сервер отдельно. Соответственно, rpc-либа не знает конкретных имен функций. Получает строку в рантайме и вызывает на объекте метод с этим именем, передавая ему полученный массив, как аргументы
«get_grog»_f = [](int id) { ... }
Это оно? То, что я просил?
зачем ты засунул ошибку в result?
Так оказалось проще. Ошибка серилизуется и улетает на клиент как обычное сообщение. На клиенте ее можно бросить, но поскольку у нас там реакт, onGovno-хэндлеры, redux стор и прочее разноцветное месиво, ее легко не поймать. Проще проверять как go. if (isError(result)) {...}
Когда-то давно я костылял, по моему даже тут тема есть, если её не выпилил. Думал, как можно было сделать на голых крестах. Лучшее, что у меня тогда вышло - это:
Это хак, но это работает. Но сила этой дристни не в этом. Там суть в том, что в reg можно передавать всякие мидлвары, которые имеют доступ ко всему и запускаются автоматически.
На самом деле такое писать не особо лень. В жабаскрипте ты писать будешь не меньше, даже если обмажешься декораторами.
Всё, у тебя есть имя, причём с учётом неймспейса. Его получить ты можешь. Так же тебе доступен конструктор - ты можешь так же получить его сигнатуру на дефолтных крестах.
Ну вот первая либа из списка - async-tls. У нее async-std только в dev-dependencies, видимо для запуска examples. Сама либа вроде как от реализации экзекьютора не зависит.