В настоящее время существует множество библиотек websocket для node.js, наиболее популярными из которых являются:
- https://github.com/Worlize/WebSocket-Node
- https://github.com/einaros/ws
- https://github.com/LearnBoost/engine.io
- https://github.com/learnboost/socket.io
- https://github.com/sockjs
Однако я не могу найти никаких конкретных сопоставлений между ними ... Судя по всему, Socket.io был потрясающим, но он устарел и имел неудачные сборки. И ws, и websocket-node утверждают, что они самые быстрые. И engine.io кажется новым, но намного тяжелее легких.
Было бы удивительно, если бы мы или кто-то могли составить ответ, который послужит руководством по выбору библиотеки сокетов и когда, а также сравнением между ними.
Ответы:
Получение ответа от этого вики-сообщества . Не стесняйтесь редактировать меня с вашими улучшениями.
ws сервер и клиент WebSocket для node.js. Одна из самых быстрых библиотек, если не самая быстрая.
WebSocket-узел WebSocket-сервер и клиент для node.js
websocket-driver-node Сервер WebSocket и анализатор клиентских протоколов node.js - используется в faye-websocket-node
Сервер и клиент WebSocket для faye-websocket-node для node.js - используется в faye и sockjs
сервер socket.io WebSocket и клиент для node.js + клиент для браузеров + (v0 имеет самые новые и старые резервные версии, v1 Socket.io использует engine.io) + каналы - используется в stack.io. Клиентская библиотека пытается восстановить соединение при отключении.
Сервер sockjs WebSocket и клиент для node.js и другие + клиент для браузеров + новейшие и старые резервные версии
сервер и клиент faye WebSocket для node.js и др. + клиент для браузеров + резервные копии + поддержка других серверных языков
кластерный сервер в реальном времени deepstream.io, который обрабатывает соединения WebSockets & TCP и обеспечивает синхронизацию данных, публикацию / подписку и запрос / ответ
кластер серверов socketcluster WebSocket, который использует все ядра процессора на вашей машине. Например, если бы вы использовали большой экземпляр Amazon EC2 с 32 ядрами, вы могли бы обрабатывать почти 32-кратный трафик за один экземпляр.
primus Предоставляет общий API для большинства библиотек, указанных выше, для простого переключения + улучшения стабильности для всех из них.
Когда использовать:
используйте базовые серверы WebSocket, если вы хотите использовать собственные реализации WebSocket на стороне клиента, остерегайтесь несовместимости браузера
используйте резервные библиотеки, когда вы заботитесь о резервных браузерах
использовать полнофункциональные библиотеки, когда вы заботитесь о каналах
используйте primus, когда вы не знаете, что использовать, у вас нет настроения переписывать ваше приложение, когда вам нужно переключить фреймворки из-за изменяющихся требований проекта или вам нужна дополнительная стабильность соединения.
Где проверить:
Firecamp - это среда тестирования графического интерфейса для SocketIO, WS и всех основных технологий реального времени. Отлаживайте события в реальном времени, пока вы разрабатываете.
источник
ws
.Обновление: этот ответ устарел, поскольку с тех пор выпускаются более новые версии упомянутых библиотек.
источник
Npm WS был ответом для меня. Я нашел это менее навязчивым и более прямым. С этим было также тривиально смешивать веб-сокеты с сервисами отдыха. Поделился простым кодом на этот пост.
источник
ws
, напримерws://myserver.com
. И да, они могут быть настроены для обслуживания с использованием портов 80 и 443. Используя обратный прокси-сервер, такой как nginx, вы можетеWebSocket
перенаправить URL-адреса протоколов на другой порт из обычных протоколов HTTP.express-ws
позволяет добавлятьws
маршруты в экспресс-приложении.