bencevans / node-sonos

🔈 Sonos Media Player Interface/Client
https://www.npmjs.com/package/sonos
MIT License
703 stars 147 forks source link

Use multiple listeners from same host #518

Open GerritKuilder opened 3 years ago

GerritKuilder commented 3 years ago

Don't know if this is related to Sonos or the code

Expected Behavior

Have an app running on 192.168.12.100 this app listens on sonos events and does what it is expected to do.

Create another app srunning on the same host and try to listen to the sonos device

Start the listener so you can respond to events

Current Behavior

when the second app is started the following error is generated: Listen for sonos events. CTRL + C to exit node:events:371 throw er; // Unhandled 'error' event ^

Error: listen EADDRINUSE: address already in use :::4000 at Server.setupListenHandle [as _listen2] (node:net:1319:16) at listenInCluster (node:net:1367:12) at Server.listen (node:net:1454:7) at SonosListener.startListener (/home/gerrit/workspace/code/dev/betterspotv2/node_modules/sonos/lib/events/adv-listener.js:67:25)

Possible Solution

Sample code or executed example

1.

  1. use script: https://github.com/bencevans/node-sonos/blob/master/examples/events.js
  2. (replace '../' with 'sonos' 4.have one sonos listener already running 5 run script 6 error message

Versions (and Environment)

Node version: latest node-sonos version: latest OS: UBUNTU

svrooij commented 3 years ago

@GerritKuilder I must admit that this isn't documented anywhere, but you can set the environment variable SONOS_LISTENER_PORT to change the port that is used for the listener.

My I ask what the use case is for running multiple apps listening for events on the same host?

https://github.com/bencevans/node-sonos/blob/995114a01dccfe76f9cd771c229e8f07c7369fb3/lib/events/adv-listener.js#L41

GerritKuilder commented 3 years ago

Hi,

I have a dev version and a prod version running on the same server.... Will try and check later today. Kind regards,

Gerrit Kuilder

GerritKuilder commented 3 years ago

Yes, that works perfectly, thanks

svrooij commented 3 years ago

Do you have an idea where this should be documented?

GerritKuilder commented 3 years ago

I think you should add a note to the example?