-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
incompatible with socket.io@3 and @4 - Exception thrown "TypeError: Cannot read property 'on' of undefined" #649
Comments
Until this is fixed, is there any way to prevent the socket.io probe from installing? We only use data from other probes. |
Our code is approximately: appMetrics = require('appmetrics')
appMetrics.configure({ mqtt: 'off' })
const appMetricsMonitor = appMetrics.monitor()
appMetrics.disable('socketio')
// ... later ...
require('socket.io') |
Same issue, I need socket.io v3, and that impedes me to use appmetrics-dash due to this issue with appmatrics. I used it in the past, before using v3, and I'd like to continue... |
If you require socket.io BEFORE appmetrics then it will not be instrumented by appmetrics regardless of the later disable call. |
The socket.io probe https://github.com/RuntimeTools/appmetrics/blob/master/probes/socketio-probe.js works fine with socket.io@2
However socket.io was rewritten for it's v3 and v4. The socket.io interface has changed slightly, causing the following exception to be thrown when socket.io is require'd and the probe attempts to hook in:
I've done a little debugging and can see:
socket.io@2 exports a function with a prototype containing the methods the probe wants to patch.
socket.io@4 exports a factory function. The class is available as as export
.Server
(ierequre('socket.io').Server
) however it's now a proper javascript Class, and it's constructor can't be hooked in the way used previously.The text was updated successfully, but these errors were encountered: