Какой язык программирования мне следует использовать для написания программы обмена мгновенными сообщениями? Вот цели:
- должен иметь возможность обрабатывать много-много пользователей (по крайней мере, для подтверждения концепции)
- протокол должен быть основан на json или, возможно, на двоичных данных. Я думаю, что json проще реализовать и расширить. Я не хочу использовать XML из-за накладных расходов. Я знаю, что данных не так много, но они должны быть максимально быстрыми, особенно в медленных сетях (например, мобильных).
- пользователи должны иметь возможность входить в систему на нескольких устройствах одновременно
- история должна сохраняться на стороне сервера, чтобы ее можно было просматривать на всех устройствах
- сервер должен поддерживать в рабочем состоянии множество неактивных клиентов
- передача файлов (не совсем уверен, как это реализовать, возможно, другой сетевой сокет, чтобы он не блокировал сообщения чата на стороне клиента)
- MySQL аутентификация
(Нет, XMPP не вариант).
Я веб-разработчик с хорошим опытом работы с PHP, но это не вариант для этого проекта. У меня также есть опыт работы с Javascript (в основном для веб-сайтов), но мне было бы легко работать с node.js, и у меня мало опыта работы с C # .Net, а также я мог бы написать C # .Mono. Сервер, который я хочу написать, должен работать в Linux. У меня нет опыта работы с Java, но если это лучший способ, я могу это изучить.
Я много читал о node.js и о том, что этот ввод-вывод действительно хорош для сетевых приложений и веб-серверов. А как насчет мессенджеров? Основная часть - сохранять сообщения и передавать их другим участникам комнаты, так что это «сеть».
Я также подумал о C #, который предлагает асинхронные сокеты, которые работают с пулом потоков afaik вместо очереди событий.
Я не уверен, какой из них наиболее эффективен в отношении IM-сервера.
Было бы неплохо, если бы кто-нибудь мне подсказал. Я знаю, что C ++, вероятно, был бы лучшим способом, но мне почему-то не очень нравится этот язык, и его трудно выучить.