You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
HI @achingbrain,
I'm using your library, and integrating it with express, as per your example: const upnp = require('@achingbrain/ssdp')(options.ssdpOptions); const ssdp = require('./ssdp/ssdp'); upnp.on('error', console.error) // Log errors .advertise(ssdp.services) // Advertise the services configured .then(ssdp.serviceHosting) // Configure Express to serve the details.xml file .then(addRoutes); // then add all the other routes
where:
options.ssdpOptions specifies a guid for the udn,
ssdp.services contains the USN, the location and the details for the service,
ssdp.serviceHosting contains the routing for express, and
addRoutes adds all the remaining routes to express.
To get to this point, I needed to modify stop-advert.js slightly. To integrate with express, I need to specify a location, but if the location is specified, no shutdownServers function is created in create-location.js, and an unhandled promise rejection is thrown in stop-advert.js when it tries to call plumbing.shutdownServers. All I'm doing is checking if shutdownServers exists before it's called.
The issue I'm having is when I call upnp.stop(), a transport:outgoing-message is emitted for the byebye, but I never see the corresponding packet in wireshark. The socket.send call never seems to return.
I can submit a PR for the unhandled promise rejection, but I'm stuck on the other issue. Any ideas?
The text was updated successfully, but these errors were encountered:
I've submitted #6, but upon further inspection, it looks like the 2nd issue is a result of my fix for the first - the nested promises are being processed in parallel, not sequentially as I expected. This means the sockets are closed before the broadcastAdvert has finished.
I couldn't work out how to wait until the byebye broadcast event had finished, so I've put a 1 second delay between the broadcastAdvert and when the sockets are closed. It's not pretty, but it works well enough for our purposes. I'll let someone more capable than I fix it properly, but if you're interested, my fix is here: davidatingenuity@7fc6475
HI @achingbrain,
I'm using your library, and integrating it with express, as per your example:
const upnp = require('@achingbrain/ssdp')(options.ssdpOptions);
const ssdp = require('./ssdp/ssdp');
upnp.on('error', console.error) // Log errors
.advertise(ssdp.services) // Advertise the services configured
.then(ssdp.serviceHosting) // Configure Express to serve the details.xml file
.then(addRoutes); // then add all the other routes
where:
To get to this point, I needed to modify stop-advert.js slightly. To integrate with express, I need to specify a location, but if the location is specified, no shutdownServers function is created in create-location.js, and an unhandled promise rejection is thrown in stop-advert.js when it tries to call plumbing.shutdownServers. All I'm doing is checking if shutdownServers exists before it's called.
The issue I'm having is when I call upnp.stop(), a transport:outgoing-message is emitted for the byebye, but I never see the corresponding packet in wireshark. The socket.send call never seems to return.
I can submit a PR for the unhandled promise rejection, but I'm stuck on the other issue. Any ideas?
The text was updated successfully, but these errors were encountered: