Что быстрее: websocket или «обычное» соединение?
Думаю единственной проблемой будет работа с другими сообщениями протокола, пока вы передаете файл. Давно не работал с вебсокетами, но что-то мне подсказывает, что передача файла заблокирует другие сообщения по каналу. Если это для вас критично, у вас есть два способа решения проблемы:
1. Передавать файл частями.
2. Передавать файл по другому каналу. Таким каналом может быть отдельный сокет или, внимание, xhr
Если мое предположение о заблокированном канале ошибочно, то других подводных камней я придумать не могу.
Помните что в http протоколе за вас уже позаботились о формате передачи файлов (вспоминаем про multipart/form-data, как об одном из решений), в сокетах вы будете создавать велосипед.
"Обычное" соединение - это протокол HTTP, он тоже основан на TCP/IP, но для получения ответа от сервера, требуется сперва сделать HTTP-запрос, это нагрузка и на клиент, и на сервер, а WebSockets - это почти что "сырой" TCP/IP, соединение остается открытым, нет "запросов" и "ответов", обе стороны шлют пакеты, когда им "вздумается", поэтому WebSockets лучше подходит для push-уведомлений, например, мгновенных сообщений (чаты), в остальных же случаях не имеет никакого смысла.