Ведение журнала и отладка
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 КБ после минификации и сжатия gzip), поэтому он исключен из компактной сборки (подробнее о различных сборках браузера можно найти здесь).
Если вы используете 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/v4/logging-and-debugging