Node SSDP Client не находит серверную трансляцию

Я реализовал серверную/клиентскую реализацию node-ssdp(npm install node-ssdp). Все «кажется» работает, но мой клиент не принимает пакет сервера. Я получаю много других полезных данных с разных устройств/мест, но не с моего сервера node-ssdp.

Я работаю на той же машине, и я работаю на OSX. У меня есть два отдельных проекта узла: один для моего клиента и один для моего сервера.

Примечание. Я также пытался запустить сервер на одном компьютере, а клиент — на другом, на случай, если возникнут проблемы с обратной связью или что-то в этом роде. Я также проверил через Wireshark, что пакеты с сервера читаются клиентской машиной. Он отправляет NOTIFY * HTTP/1.1 в заголовках.

Вот мои реализации для клиента и сервера:

Сервер

var SSDP = require('node-ssdp').Server
, server = new SSDP({
location: 'http://' + require('ip').address() + ':33333',
ssdpPort: 33333
})
console.log(require('ip').address())
server.addUSN('upnp:rootdevice')
server.addUSN('urn:schemas-upnp-org:device:MediaServer:1')
server.addUSN('urn:schemas-upnp-org:service:ContentDirectory:1')
server.addUSN('urn:schemas-upnp-org:service:ConnectionManager:1')

server.on('advertise-alive', function (heads) {
  console.log('advertise-alive', heads)
  // Expire old devices from your cache.
  // Register advertising device somewhere (as designated in http headers heads)
})

server.on('advertise-bye', function (heads) {
  console.log('advertise-bye', heads)
  // Remove specified device from cache.
})

// start server on all interfaces
console.log('starting ssdp server')
server.start()

Клиент

var ssdp = require('node-ssdp').Client
  , client = new ssdp({
})

client.on('notify', function () {
  //console.log('Got a notification.')
})

client.on('response', function inResponse(headers, code, rinfo) {
  console.log('Got a response to an m-search:\n%d\n%s\n%s', code, JSON.stringify(headers, null, '  '), JSON.stringify(rinfo, null, '  '))
})

client.search('ssdp:all')

// And after 10 seconds, you want to stop
setTimeout(function () {
   client.stop()
}, 10000)

У меня заканчиваются идеи. Это странно, потому что я ранее реализовал многоадресное решение UDP, и оно работает. Насколько я понимаю, SSDP — это многоадресная рассылка UDP за кулисами.


person John Murphy    schedule 26.03.2017    source источник


Ответы (1)


Из самой проблемы с github, по-видимому, добавление sourcePort в конфигурацию решило проблему. https://github.com/diversario/node-ssdp/issues/75#issuecomment-292054892

person John Murphy    schedule 15.06.2017