ну если дублировать функционал не будешь какой то
но прямой шины между ними никакой нет
Так а зачем дублировать? Каждый сервер-сайд(JS и C#) отвечает за своё. Пусть взаимодействуют между собой, но через события.
обмен данными тебе надо писать свой любой, одинаковые евенты все отпадают
Не отпадает) Через события же) Вот, например, JS обрабатывает авторизацию игрока. Как только игрок полностью авторизовался (вписал пароль, выбрал персонажа, выбрал спавн), JS сервер вызывает событие "onPlayerSuccessAuth". C# серверу останется прослушать событие, выгрузить данные персонажа из БД, нацепить нужную одежду, headoverlay, facefeatures, мб какие-то просчёты сделать.
Это опять же, как пример. Понятно, что в целом архитектурно такое смотрится не оч. Но высвободить JS поток для других вещей - почему нет?
Да в целом, можно раскидать 50% на JS, 50% на C#. Сервер в 2 потока хуярить будет. Уже лучше, чем в 1.