サーバー/クライアントの実装であるnode-ssdp
(npm install node-ssdp
)を実装しました。すべてが「動作する」と表示されますが、クライアントはサーバーのパケットを受け取っていません。私は異なるデバイス/ロケーションから多くの他のペイロードを受信していますが、私のnode-ssdp
サーバのペイロードは受信していません。ノードSSDPクライアントがサーバーブロードキャストを見つけられない
私は同じマシンで動作しています。私はOSX上で動作しています。私は2つの別々のノードプロジェクトを持っています.1つはクライアント用、もう1つはサーバー用です。
ノート:ループバックなどで問題が発生した場合に備え、別のマシン上の1台のマシンとクライアントでサーバーを実行しようとしました。また、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マルチキャストです。