судя по вашим ответам проблема сейчас не в языке, а в архитектуре и понимании того, как это будет работать.
при небольшой нагрузке (а у вас именно такая ситуация, во всяком случае сейчас, правильно?) разница между языками только в удобстве.
удобнее всего это, на мой взгляд, делать в node.js.
алгоритм:
если подконнектился клиент, запомним его в массив (хэш, сет или как оно называется, не важно). если клиент дисконнектится, удаляем из массива. если клиент что-то послал, то принимаем сообщение, пробегаем по массиву и всем клиентам, которые есть в массиве, отдаём это сообщение. всё.
после этого дописываем обработку исключений и ошибок.
на пхп точно так же, только обрабатывать сокеты чуть сложнее.