UNPKG

axis-discovery-ssdp

Version:

A Node.js SSDP (UPnP) client library written in TypeScript capable of searching for Axis Communication cameras.

54 lines 1.92 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const logging_1 = require("../logging"); const Constants_1 = require("./Constants"); const Message_1 = require("./Message"); const MSearch_1 = require("./MSearch"); const SocketBase_1 = require("./SocketBase"); /** * Class representing a SSDP socket that support the HTTP method M-SEARCH. */ class MSearchSocket extends SocketBase_1.SocketBase { /** * @param address The network address to listen for M-SEARCH responses on. */ constructor(address) { super(); this.address = address; } /** * Starts a search by using HTTP method M-SEARCH. */ search() { logging_1.log('MSearchSocket#search - %s', this.address); const message = new MSearch_1.MSearch().toBuffer(); return new Promise((resolve, reject) => { this.socket.send(message, 0, message.length, Constants_1.SSDP_PORT, Constants_1.SSDP_MULTICAST_ADDRESS, (error) => { if (error) { logging_1.log('MSearchSocket#search - %o', error); reject(error); } else { resolve(); } }); }); } onListening() { logging_1.log('MSearchSocket#onListening - %s:%d', this.socket.address().address, this.socket.address().port); } onMessage(messageBuffer, remote) { const message = new Message_1.Message(remote.address, messageBuffer); if (message.method !== 'HTTP/1.1 200 OK') { return; } this.emit('hello', message); } bind() { return new Promise((resove) => { this.socket.bind(undefined, this.address, () => resove()); }); } } exports.MSearchSocket = MSearchSocket; //# sourceMappingURL=MSearchSocket.js.map