Ведение журнала и отладка
Socket.IO теперь полностью снабжен минималистичной, но чрезвычайно мощной утилитой под названием debug от TJ Holowaychuk.
До версии 1.0 сервер Socket.IO по умолчанию выводил все сообщения в консоль. Это оказалось излишне подробным для многих пользователей (хотя чрезвычайно полезным для других), поэтому теперь по умолчанию мы полностью молчим.
Основная идея в том, что каждый модуль, используемый Socket.IO, предоставляет различные области отладки, которые дают вам представление о внутренней работе. По умолчанию весь вывод подавляется, и вы можете включить отображение сообщений, задав переменную среды DEBUG (Node.JS) или свойство localStorage.debug (браузеры).
Вы можете увидеть это в действии, например, на нашем главном сайте:
Доступные области отладки
Лучший способ увидеть какую информацию доступно — использовать *.
DEBUG=* node yourfile.js |
или в браузере:
localStorage.debug = '*'; |
А затем фильтровать по интересующим вас областям. Вы можете добавить префикс * с областями, разделенными запятой, если их больше одной. Например, чтобы увидеть только сообщения об отладке от клиента socket.io в Node.js, попробуйте это:
DEBUG=socket.io:client* node yourfile.js |
Чтобы увидеть все сообщения об отладке от движка и socket.io:
DEBUG=engine,socket.io* node yourfile.js |
Удаление debug из вашего пакета браузера
Хотя это полезно во время разработки, пакет debug добавляет дополнительный вес к конечному пакету (около 4 КБ после минификации и сжатия), поэтому он исключается из облегченного пакета (подробнее о различных пакетах браузера можно найти здесь).
Если вы используете webpack, вы можете удалить его с помощью webpack-remove-debug:
{
module: {
rules: [
{
test: /\.js$/,
loader: 'webpack-remove-debug'
}
]
}
} |
Логи ошибок в консоли браузера
Обратите внимание, что логи ошибок, такие как:
net::ERR_INTERNET_DISCONNECTEDnet::ERR_CONNECTION_REFUSEDWebSocket is already in CLOSING or CLOSED stateCross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at xxx. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).The connection to xxx was interrupted while the page was loading
не генерируются библиотекой Socket.IO, а браузером, и поэтому находятся вне нашего контроля.
© 2014–2021 Automattic
Licensed under the MIT License.
https://socket.io/docs/v3/logging-and-debugging