{"_id":"node-xmpp-bosh","_rev":"146-78d18affac8125e948e1347e5c2f8967","name":"node-xmpp-bosh","description":"An XMPP BOSH server written for node.js in javascript","dist-tags":{"latest":"0.7.10"},"versions":{"0.0.1":{"name":"node-xmpp-bosh","version":"0.0.1","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"629d88f0becf462c4fd4d4e33586ea4aa0f381e0","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.1.tgz","integrity":"sha512-p1ut+r2HymjZ3WiEG6wiWHY3YVW/o342sxAaBq0XRCQTBHXgHLidtGI9Cdj9FXPhcPu7Gki0b37LmcVF5J+ZKg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKxY8YlAs6YwKpCMqjLqwT8uItlQPO4NadZPvLV1zVwAIhALor2TPJY0l21JlML39/F3u0Fv83Zx4kEVhxBZnvigza"}]}},"0.0.2":{"name":"node-xmpp-bosh","version":"0.0.2","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"513b598df15da3af40a30e9b329162ef691d67e3","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.2.tgz","integrity":"sha512-mW9RRhZqISb7Do25uppp7CqV4Dr4xfdRvJ1B5mK8FB4b6mi5z45D7TRSfWAbSZiOgaLBEflEfqIRBFtya5KrRg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDX4jGsmdd2Pd/UzKSmLXo1jpsfTwPQg240DfcmiwZNSgIgDNxN9RFNk5fsUmj2wmNmnqykaJ46JdCRg2MuiikIwEQ="}]}},"0.0.3":{"name":"node-xmpp-bosh","version":"0.0.3","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"b03180b3f3ed2456c0a05cce4947624194b8368a","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.3.tgz","integrity":"sha512-h+4t2gm9Z0GL/8NizCuSgUPzcuUoynE52Cn8Ul10ns29AHCSzanOHnEsY5OHAxKjG4qemsGeO+cMwLzyJKuciw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCPLSXZZEOCfEIy23liTAGkpdXkJtiif0Fkdg4gb2bVuAIgEZe4rydG/6QOPreKJo3RNJtCm/5ue9qSgGFWW4iSSHo="}]}},"0.0.4":{"name":"node-xmpp-bosh","version":"0.0.4","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"4af69b4db157d0b59287dc1bfedbf09114dfc68b","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.4.tgz","integrity":"sha512-aRfoh7jLFbsq119dKkLxT5WsLJcipnB4tbwtchFhTxaiLrbL8JMV42Zyccd2dUHOwIktlW6WiZ+IuM8h9j+4+A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGZWRGcEuRXZIQBXJFRW33Tj5LHzafHgKxzMsjFR7r5aAiEA6v6Fya6LvW8bI7qcqves3+ItHfdp6oFU0qh12UDd/Ws="}]}},"0.0.5":{"name":"node-xmpp-bosh","version":"0.0.5","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.5","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"672fde7595aeb2b9586df623c95d581a8de19ab9","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.5.tgz","integrity":"sha512-U7s1xq9tm86gRCuqoQygUULjFoD/jMoIFzAUdFrVLbY4Qj3u0jL0JzYUuUZyrLR8PsWmTiliFbjjc+aKJ94aeA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDj9XC1+TF/2UY2vtcjkur5wlF/GJvWUkdUPf1pVaa02gIhANG5lMYFIEQCl09MOECKWNokKKtA/AlLJTKJIeGjolck"}]}},"0.0.6":{"name":"node-xmpp-bosh","version":"0.0.6","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"12805c80a0e1404bd01c77e01055589de883b481","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.6.tgz","integrity":"sha512-Q5HvZePABnVHziyIS9jG+NAwNojhK2OhbCEIj6FgvnGyWh2m+Gh+CaiWoftHsoeNhUHq0sS6xpniDBZX1WMIQA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCVp0zW75KCZFYObvSKXvuGVV+n9n4yxsUaDl+zktMn6gIhAMnBgp4ppyf23H/DzbODFZatTn6rCBgqlcCtgWvnyvSI"}]}},"0.0.7":{"name":"node-xmpp-bosh","version":"0.0.7","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"25a399dad1fe23d3d01415754672ebedb095b807","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.7.tgz","integrity":"sha512-OfWyXqxV7NetEanEwUttn+aUtueLfGxjhdSGyymqplMPgVcRTlO41ND7eeiHCtE2aV7OYL/yrItCsEppEX3FFg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkjZcO9XbasYKouHp7XfnlEhcmvB200KceQZoAkADAOAiAkfvlbhdWt9OWS4whr9GWzDdOJu4QxE404OyDwY9TYsA=="}]}},"0.0.8":{"name":"node-xmpp-bosh","version":"0.0.8","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"660ec7758bce1b5588c7aba1f9f31defdc6cd799","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.8.tgz","integrity":"sha512-IVP9xPWA64KEPx4LiaPOQGOH3GRkHL0fFeAvFva0CL7rB/HokNg0OFFM0VMcRFcN7xD5dbmK7uQKecdBlj4hxA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDzLCxo3XRC1fCPEmR+8hZbdwCmA4/nVMvBepjKdKNIVQIhAKBw5HWcdOUtJMAxbIeIwWCO/7wjJm5W0pb0Fh+m3RjZ"}]}},"0.0.9":{"name":"node-xmpp-bosh","version":"0.0.9","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"d3b9f3ee02dd7579073347c3f1ecb1e7846342d5","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.9.tgz","integrity":"sha512-uRxnkOT6JMmJ8XdozVPiWatFdAaUXMXVyONeUHizU7jHZBn05Gu+lo3p18FUzZUXSvAEoJy395Ncnpl12jhj7w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIDYcjMJxMDo5R9UXKDkOi/1XfiUCPAjl6ukax3ERoNzLAiA6lMmcQfu4+/m8NK7AkCR2POk7wu73FCRiktxbbR/H/Q=="}]}},"0.0.10":{"name":"node-xmpp-bosh","version":"0.0.10","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.0.10","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"7b076a25c9d0923afcba238d2bd746ecb9082a3f","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.0.10.tgz","integrity":"sha512-WyXdSX0bZaX6lcySaTfvy1RhCK3qQmbm4zZPB1iKxgvzqMKVf+DZk6GZ2IylqfgH8edJWafoRbZyrD0/h72flw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDxBYR6VoYpu5GQYRiPWcF4W8RxSHIpQ35FGpN72FjMbgIhAISrlSOX6fKHUwUrnDuYw5GyQl2KG5WgaAji7qVT6OFm"}]}},"0.1.0":{"name":"node-xmpp-bosh","version":"0.1.0","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.0","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"047a26d4414bb091e180df0d5787dc998090fa4c","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.0.tgz","integrity":"sha512-6ldqT2qDaqVhUh832zUIklreOjeTNof3e5DTPtLhJ5WoWMmiWtMZ47uVdzlT5PXNIqq/3/YH8QTSzLJOG8K+mw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+j4hAuQHiGUbc+zyyYXs71r/jnQP6KCBvs7CvcSCo9gIgI99cWRbYiXFo09MQTWWbU+rZavpPuOhwjhYHe/aV8LQ="}]}},"0.1.1":{"name":"node-xmpp-bosh","version":"0.1.1","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.1","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"6852f40575f1c7629b986ef384df0bad6d80ad89","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.1.tgz","integrity":"sha512-iZOZReKIY2oBRGUCj1ET74gx5MdVKAv6/haTRELZJL7IpEaRIp+du8Vvi9fGuH4InFX2fD1gr+6KHC23k+T9Xg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCikDxUwmiaLCrtm/JHSuK7OLoJ6IPMOxEwQQmSagU8mwIgJgciEq3Mzr2OOYsILu7n/v6sf6uTprg50qM0hXKMPqs="}]}},"0.1.2":{"name":"node-xmpp-bosh","version":"0.1.2","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.2","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"671b6067ec883492004e7998bc3db8edee3e2b40","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.2.tgz","integrity":"sha512-AoeJ0i3yWKNKHRdhWIOufDoz8bsOtPRABhosG9d+nb9si+cVCq+Adn07wTOOV5vavLYYN+YfchX9wNpocm3mBw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5Sahcw0vcGX82T3Wkv3EvM5K7vhSJNyf9UqVPFpos8AIgRBqWVDMld0jpRh1Wp4+9Su/B41DaHLcxekDFWFYxr6w="}]}},"0.1.3":{"name":"node-xmpp-bosh","version":"0.1.3","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.3","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"9ee0029bff5ed72c323965a6087c562cc50ef0e5","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.3.tgz","integrity":"sha512-NumohWKO2zQ6AZPicgucnCu5RHk6sXMKa+avXN6AxipitQEROgPR9svFYg0U63ZAEQYQa6FTESViaY5l+v0DSA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEA3RLvlAatacOKlf2E+EqJR8lr9ISZEZj73IFzT3DxTAiBBRflmQJOlS+8iQYLlNQsJbJIgmGga4MQDODrErhzgxQ=="}]}},"0.1.4":{"name":"node-xmpp-bosh","version":"0.1.4","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.4","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"0d6695c1f726e7a5a8fdeb9fb2bff2c53b6bbebb","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.4.tgz","integrity":"sha512-Jlrc3Oymz96MRT7zeUEmdLiE6D0KTH0RGa9/zJYtKYDd+SAiMGgzD3qOTMEBQWRqK0Qb9lXRZa83kaeFn6I84w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCXntvx7DKOQQGtntoD2K3Jw/dSB9ktLT3QpPcNulHMjQIhAIUeBR/oTAzcYhh+3W7mSr7B/BL/gsLMINbGezNiixHs"}]}},"0.1.6":{"name":"node-xmpp-bosh","version":"0.1.6","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.6","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"2c4b7dbdbfe1ac8b3c25cc3e107e04767bd8ba27","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.6.tgz","integrity":"sha512-M8QfVDNkVYeKAxsUvUet/Lb0Da7AEInUlyw5IpVmiwR0LaH8chJdC9nFeoMQuJMQlt89TJ4mllFIeVLFnT4VNw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIETkuN+cbaRdVQy8BPt3khXblpb6phSy/57P1dI+IfZwAiEAgeZEbx4jmGpXGkRrYbazUI6UA8USvB6usu5QbaeodxY="}]}},"0.1.7":{"name":"node-xmpp-bosh","version":"0.1.7","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.7","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"0f89f967d88f083340eaa8d620020b480e38ff50","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.7.tgz","integrity":"sha512-WF8XXvOhcuf6R5QnUKDbDp1nEYIQ7n/zjwH9IlKAy9wjrM0NCo9m37UGZjjzaIQaYx6UMFGwHd8LSD8hHaebPA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA8u+Rf5G/SY3fPpGIz9ST6pGAR2YsNjV0KOPv0kdTB6AiEA2FY8ZhzxcSqa7QBeWoFq/5Qborf0jnYvTRdi06zNLvE="}]}},"0.1.8":{"name":"node-xmpp-bosh","version":"0.1.8","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.8","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"9d10d1224fd7ab38d3ea446ab67c258ee20a13ab","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.8.tgz","integrity":"sha512-DbghJRsuHsHjr0ZDQH0eszhwl6kWsVWOUuxOeXUkdR3w5pY0+3aqArBHqQVMUCpi8+uzkfNSYGinU9LNf3gcIA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCYoYGLy8o5fji6vMP8w3e/fMRRxmG02RzvwaXu8I6rqAIgeoj/nvNbvHu1GqIUw+qpP0LKSht7tm8kcJ86hXb/OXY="}]}},"0.1.9":{"name":"node-xmpp-bosh","version":"0.1.9","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.9","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"cb66994419677691bc91e1c8d2e57b7344ff92e4","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.9.tgz","integrity":"sha512-56Pi4Ow36LsIumVc8krIpSVlG8eOq6r91uXXSoWi8KZruiEuDeR5qsgeP4A7WlX/K9eIQFXs3pEophiBM3U2AQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCoUeW0HzSjCYLxb9Qr6ytz+bf+fOqA7cpqED3vRxO0DwIhAIPoV8EL8Bdy0++KVwNBTYi62M4F8O3NN03AvkvwW5vG"}]}},"0.1.10":{"name":"node-xmpp-bosh","version":"0.1.10","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.10","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"aac24f41c83d1872eeb3eba3531cb5802146af34","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.10.tgz","integrity":"sha512-26w5OfxWZ8UpSll8qulSFbJegkjVbVYO5fK9VvRPmolCTgwDq6nvhbOW1hXeWgkUSpepDpfTETyI8suSEFbjGQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEiUV8zu5FPIr2DIM0l40jqM1+pIAwqXFN2OQHAeSG8yAiBEMiCEaDa4+phGAZZoztu0BfErbegQ/JAhwQpk+ocQAw=="}]}},"0.1.11":{"name":"node-xmpp-bosh","version":"0.1.11","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.11","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"2b0b04d10d646feb4e3419e8a2988377e473c9f9","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.11.tgz","integrity":"sha512-a1L4lQPNNsj/pFtckft6sKNplet5MVZwmupd8qEGIP4xeovvqSUrLjILX903i0AR5LPC9Ub18syLGiuNWVCOHg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGd7fQeytY4ULDjlFtetj9IkXrt0YiV1fdeu+2KHo4WuAiEAvSnDx6zp8Dxmm+LmNgXuZRIDCZR3PbvFILVQ7Pp3uQc="}]}},"0.1.12":{"name":"node-xmpp-bosh","version":"0.1.12","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.12","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"4d3b0aaa7b2ec40a6ba6008a43c21011b0b5e24e","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.12.tgz","integrity":"sha512-kVV/jlO6gh5V3A98h6V6na04rABVbi1hDqtoDN7jIHZvxf34z9clnRonO967XBiPntybFlz6fmgCS/Gf9jkJ5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzFYzctWu7wDmlL5Tq5L2fvx53Hdxdo5LCisZ8x9Lx6gIgbmHb63islGrw8vVNf0kC83wwOuQa1XY8KxRgoW7eEKs="}]}},"0.1.13":{"name":"node-xmpp-bosh","version":"0.1.13","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.1.13","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"0.3.7","_nodeVersion":"v0.4.1","directories":{},"files":[""],"_defaultsLoaded":true,"dist":{"shasum":"6f29fd05fef8d74f44a82318fa15a29b1dbd81cd","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.13.tgz","integrity":"sha512-PwL1BriXLTxUqtfMuJEsi8B1AVAsXJrl7jErUQsv96iD3i8neezDsVZWUVizXNsiBgbfDVonpF5/FAaETAla5g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCVm+vbdgDGE++QI8pWpVB4zxpfmaisvcyO8l3zWVdMiwIgL/3nRswtQ10wXSt/fkGaxalZbL3IXWTga5jXQ3xDCP8="}]}},"0.1.14":{"name":"node-xmpp-bosh","version":"0.1.14","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Vanaryon","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engine":"node","devDependencies":{},"_id":"node-xmpp-bosh@0.1.14","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"1e37aaa065c01bccbefb1e3418dd30c9893f316c","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.14.tgz","integrity":"sha512-apUYNIPfCiiU0qBF+OEorPydGrEQuag8lovOLKinbEAuZ6W8kmx4hrzvGA+SnthbHUTrJmWCF6yWvOxTC2QfUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIQCwo/8ZcXpHHrujTuNXxEwGlmvGsj4vavY7is9U4zOXOgIfTlX0ktYQzjHPU35KHZ8PYGto5K4OpE7VxkCJ+9HrtQ=="}]},"scripts":{},"directories":{}},"0.1.15":{"name":"node-xmpp-bosh","version":"0.1.15","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Vanaryon","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engine":"node","devDependencies":{},"_id":"node-xmpp-bosh@0.1.15","engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"7318071246ecdb0cf325f8e294a9e14b593ac9eb","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.1.15.tgz","integrity":"sha512-Jv5mYseOGxvs9RMV7ONw5GEI8wwPMzp72LfrV561vTXr8MtO4UpfJjXcbgOno/oAGslzq4+zQ6gBB73nkAOfJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC31e77JnPFXG9l086aLFrtTu3Qzy9CalPhQSJN9E+xfwIgFaPvIqc/GDBwnAfOX1VOJnVWpFd+JQFZOzmwJpW3yBU="}]},"scripts":{},"directories":{}},"0.2.0":{"name":"node-xmpp-bosh","version":"0.2.0","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.1"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Vanaryon","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engine":"node","_id":"node-xmpp-bosh@0.2.0","devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"4cb5432e9ba16a9a6f3597e4cc6e22683c7e54f9","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.2.0.tgz","integrity":"sha512-pVRLKX/npL4pUZaN9KCeBPxUup0q1eIUbyxlt6xRPfBpNoVNZyrr8tNMYbRrLBiIe4aNBQQj8miGQE9LUCc8Iw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCLhftcdh+LInT0cb6wXXQeb556KsZtIuQF4TU7dU9wugIhAIL9GRCup6+gOmTxqUyS5IzMvVLVbehqgGgq/kU715Rg"}]},"scripts":{},"directories":{}},"0.2.1":{"name":"node-xmpp-bosh","version":"0.2.1","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.2"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Vanaryon","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1 <=0.4.7"},"_id":"node-xmpp-bosh@0.2.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"0f6796114a38bcd3d813884ebe387bf739325ea8","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.2.1.tgz","integrity":"sha512-G21Fy+ExqFs3dBXyMGApWc90SeYaa7EpdjbgYV7MQv6eJhQrIp15cRi1r9Cu0F39bofebRKNpj8qDXFXV3WGJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBDQp+GrscJ6zM5nn6UtiJDgf/CM8ZxBT4TmtOzM1TONAiApsF+Jo8kBKZdoT8saZLGZuYLewT9m+rrmJRgeDXqRyw=="}]},"scripts":{},"directories":{}},"0.2.2":{"name":"node-xmpp-bosh","version":"0.2.2","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.2"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Vanaryon","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1 <=0.4.7"},"_id":"node-xmpp-bosh@0.2.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"087ba298c981a259a2bade0ee26ecce24430c9d6","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.2.2.tgz","integrity":"sha512-GJmYK/fabxU/T40QLhQS/EnEhyILTFeC71Uzv3WEOALQJrbYaSsQF/TfQUykxGeMYrfwZfOsZbYn7aHhO3RLkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjbz+v+lYATbxi0F9FXESgBtjOAXSYRVuCqaqC+L+zdgIhAIlrr9WoRfVppF8l0U/q1tLMe25rxh6S5DVaxc4Yw0yJ"}]},"scripts":{},"directories":{}},"0.2.3":{"name":"node-xmpp-bosh","version":"0.2.3","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv Matani","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1 <=0.4.7"},"_id":"node-xmpp-bosh@0.2.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"8369cbba63a16a24f6061e97d2463118b7890451","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.2.3.tgz","integrity":"sha512-+BQxlKKxRsoi5bq1WJBSF1f2sJGQ/FjoF1RfNVsJQqhOfKekMsjvK4280691VP6MiE4xMQeNILu0x9SOi/6RCQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD9z1Si/MiOIqTOpRf4oymwfz74lYen22YPyaWuC53ijgIgGGQwQVlXd24QPQVvIIwbpnF9/FKx9CHnBhdmN6v7L90="}]},"scripts":{},"directories":{}},"0.3.0":{"name":"node-xmpp-bosh","version":"0.3.0","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv Matani","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1 <=0.4.7"},"_id":"node-xmpp-bosh@0.3.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"4607704e33ed165e3bcc7dd9e8c8dbf2837382c5","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.3.0.tgz","integrity":"sha512-5E4S9qwK9D45CwLA7VKLqxc9z2ZpBF3PayM5DbbfdUAVzrHp6oCNVaxMhIKv54a0T/Mxssis/+cTopSsEVSSqg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHcOH0YcR7rG4pYJlIzKVyiMntA/0IUC6/NPT8BhdLO8AiEA+q7yHflFluoVC1Y8fxUK2rZDKe3Ff54nzvHEWh6r8fQ="}]},"scripts":{},"directories":{}},"0.3.1":{"name":"node-xmpp-bosh","version":"0.3.1","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv Matani","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1 <=0.4.7"},"_id":"node-xmpp-bosh@0.3.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"a1599a6f8436d9d47f1dca6e7c84fecebf7f47d9","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.3.1.tgz","integrity":"sha512-rjcN5NRA7I9cdf984zex4wutypSz4hhjhEZiR4o4DMdizmyaVMJnH1HCwq9vllfTCBEAIpDuSCfc9JM62ogWkg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDbMJEmXFQA6lBiB2YuEY47jS+9dmo03HzwJtnHbTJeNgIhAKkhVlBcZtfyreq3Fsw20Ti9jjGE/WYONQVyrhNKcVL2"}]},"scripts":{},"directories":{}},"0.3.2":{"name":"node-xmpp-bosh","version":"0.3.2","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv Matani","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1 <=0.4.7"},"_id":"node-xmpp-bosh@0.3.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"2e69a7f51951ff65604b9759d1fba39dfc3d6b71","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.3.2.tgz","integrity":"sha512-MYxYZyEfRKScXHG7NCRbZe5HYOTEDYT5G63+H4YXEFAH3lVD+LJCQ/BNFjyoKFD59NXDnWpjLK0D1Gv/bRGOZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEkx1kQI5FUCjBM696A8Rh3OY11tThh+nXMdYFAGlAvcAiA/yHjOKEBD+l21h/rXtcgccZPafS8vK+kML089fF5inQ=="}]},"scripts":{},"directories":{}},"0.3.3":{"name":"node-xmpp-bosh","version":"0.3.3","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv Matani","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_id":"node-xmpp-bosh@0.3.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"2b085a63b54f4b5d83a6f699d88da0566761a7d2","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.3.3.tgz","integrity":"sha512-wiWkep5T4i5Q89bW6uQLUUlsqE5tDqsE0Ne7lxrI4d5+GTJMbtWZQw9XX2XT8T7yLrBP/hzxSy2zY9WEfgVHDg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICWZYBSINvANtBbYULQIo/wu3Tk6sYNpryFzv9CGTeoUAiEAu5plGs4kUUPrcMzmsXjE4668YPvPMcC8fKeRq5Qonn4="}]},"scripts":{},"directories":{}},"0.4.0":{"name":"node-xmpp-bosh","version":"0.4.0","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"Dhruv Matani","email":"dhruvbird@gmail.com","url":"http://dhruvbird.com/"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_id":"node-xmpp-bosh@0.4.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"c0cadb237f557772a444e56e29604a6e1e54de2f","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.0.tgz","integrity":"sha512-aRQJXyDpm/ym7zxj3LiG8mxuKlTCtrtnixoyRWom6IlFkDI5ooQaMY2JLiE4+x4En7EOWMXMQfOOWAWYN8GsSg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC+NzEypbpGaJq8K3pBPNR42hCpnd3qa3BW1OZK/1gC8QIgbRRfdQ+IcurFOJhMBvV2l4ymjsPNheIXk83PhxTgZCA="}]},"scripts":{},"directories":{}},"0.4.1":{"name":"node-xmpp-bosh","version":"0.4.1","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_id":"node-xmpp-bosh@0.4.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.10","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"f185c4f890c6a4124612e6a6eafc57b5c8ec5939","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.1.tgz","integrity":"sha512-G/0Kv3r59d10JubwuJNuyD8ccOWOwA5dFeuYdKbvWwbO5VcQ5NKAfa9WbxPnWDi+9eEKYYbdrom0N1T4X6AeZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGvib+5S0lFEqwGnECd9id27wlEln2PijNmlpXDNE+OGAiBAIRDGxAAFXr7OC1u6QkAfj3Weuw0S93sss5M+4+JSKw=="}]},"scripts":{},"directories":{}},"0.4.2":{"name":"node-xmpp-bosh","version":"0.4.2","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"devDependencies":{},"_id":"node-xmpp-bosh@0.4.2","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"736fb8bc84de42203322e28b72cd9ce5f49956dd","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.2.tgz","integrity":"sha512-+NFsZpbuH5nO1qi55rTKKYaAsr4XvWjMmjk9+XFa1qZ6NJiFtU3ksc1imAR+N7ULHxpVP7gwwVyRCgdT+vbr+Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEeJtdDcNks8Xjmp2wo1bPcFoQ/WfDEXJPss+wSSs/NrAiEA6KMPCaIMFTmjU2bIzL+/4KdnDqoiG6x2ytf2l/AZMRU="}]},"scripts":{},"directories":{}},"0.4.3":{"name":"node-xmpp-bosh","version":"0.4.3","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"devDependencies":{},"_id":"node-xmpp-bosh@0.4.3","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"cc8fe45f6e2b1ec4a05adfc063a7d25da610f0d4","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.3.tgz","integrity":"sha512-Z0Ou/1wj0/+m14uqmdg+7BTu5ynUNhnkqI72QbBujqH9qEC/a8QK1Groee/z0uinJleXJP7OMJtwvzprLiu01g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBzieyuVlgU6gxu5zeFCWAL3bmeouy5yJ9lJ2bnACqhSAiEAn24djOVwmdyN0JMkIwZqRA29Brr+UVG1BL2OOlkShQY="}]},"scripts":{}},"0.4.4":{"name":"node-xmpp-bosh","version":"0.4.4","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"devDependencies":{},"_id":"node-xmpp-bosh@0.4.4","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"5e9f668027a9395222f050a9b5fc879e1a95715d","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.4.tgz","integrity":"sha512-Sp9xIY9ILi5t06KA4yTQ+5OBg4Ue1t3DLAq7m2rdIJD2ZaGfP3FsXg1nvUPmcuEBf7WPfRIkKZWTLw9RoSo1dQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFWlke/LyATEPfAmPD4MgbCKqOet5NGJtSIGUJbCc14ZAiEAybmLkwF3IAsgnBa3kH/AvvaIZO+GSoyPG/ftNf+1HwQ="}]},"scripts":{}},"0.4.5":{"name":"node-xmpp-bosh","version":"0.4.5","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"devDependencies":{},"_id":"node-xmpp-bosh@0.4.5","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"b9fa1be844f24d03df05abfb1090873654dc489c","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.5.tgz","integrity":"sha512-+NoTL/6Jn1fS/U14BF5w9ZjHr42ScJiQD4L7zmHlCrl8wDJQ0MNXyST1lcxz4Jd3a/M7Y+Tz4B4Dhc5mUYE4+g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQ596QL+WTZVXR7UfpQAA50ehL6R7MULXBmWskZsQyagIhALr8pPzJH/7slFLgxOqEPj+6lWDMja49NLO/GJwpG9z5"}]},"scripts":{}},"0.4.6":{"name":"node-xmpp-bosh","version":"0.4.6","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"devDependencies":{},"_id":"node-xmpp-bosh@0.4.6","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"07c066f7f8764f7810c8eb64df83115fe86869a7","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.6.tgz","integrity":"sha512-rdsS/ZNs5TFnhKy1Lg2UhhN0i6hCfHVN+QHa3SMR8w7w6DHpXGoPsyDsoBcKbKg9bM1Ifikvd1vYxBSx+lVeaw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHbMcPjG+KcWhyFk7EiuwRFnz4iEiqb1HWFq53rHIi3OAiAFnkFtzswTt5e1TVdG7gdqPgAyjCalCkzYipEs5grJbw=="}]},"scripts":{}},"0.4.7":{"name":"node-xmpp-bosh","version":"0.4.7","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"devDependencies":{},"_id":"node-xmpp-bosh@0.4.7","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"f4cc8bfba0460180a17f078f279ae00364a64943","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.7.tgz","integrity":"sha512-71NjbeMnLqQEQc6iZNbd3g/yommB2w/GuSRCMXkfi3sa9TENiPcDoiOxRATLthJfNfPmuEU7RB/xusglpYKP9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCkXtIqAi513Ro5sYggiRY06g6xZwqF1qMae4PmfQJ5ygIgIuGk+weYW0FF4jbQyzGVe7BUsWeVViiNVjPZGV4xRu4="}]},"scripts":{}},"0.4.8":{"name":"node-xmpp-bosh","version":"0.4.8","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"devDependencies":{},"_id":"node-xmpp-bosh@0.4.8","_engineSupported":true,"_npmVersion":"1.0.6","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"d2c5d32c4f30590ee20e3fcaad84607b9ee54505","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.4.8.tgz","integrity":"sha512-aWSsr3f4SedUvYEcZYpjl7ECr/KlR5cKA26nQsRvN0Kd2IjdgGaD8+hn0Hz/22j43vHTZIz8PhC120Z9/uqB/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDJk20o4s0tUG3gJDpdOkpjUHk7XF+4gQY4y1OsYlJ9PwIgC8yeOkN9hOBh2jIJtte96E3moV/j5I8fI31kfIzVc9Y="}]},"scripts":{}},"0.5.0":{"name":"node-xmpp-bosh","version":"0.5.0","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"vanaryon@gmail.com","url":"http://vanaryon.eu/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"},"_id":"node-xmpp-bosh@0.5.0","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"1d6bd3d8e906c3f1048b8438337855b129c8c6fa","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.5.0.tgz","integrity":"sha512-Lw9qTVGteQ6YyZ8e8MN/K6hf7VUeehXljMqRkrpH45mRJ/wALlp7JblRq+HIzot1ii5m8S+qFz+QhDEUEfHpiw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFMl5oiGyOof9cJNb/x7wux4ZwmfTWrr7suwkc4G9hxnAiA+JwFWIQFF0jSm+5BBxSMrUxDkPTySJiunnMz6dpf85w=="}]}},"0.5.1":{"name":"node-xmpp-bosh","version":"0.5.1","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"},"_id":"node-xmpp-bosh@0.5.1","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"50c425c33ceb4fe9ecf548aae29cc4882b80d1b6","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.5.1.tgz","integrity":"sha512-wvvLerD3MVy4IzEkfoxmS2KtQL+ec5Ic+BXQBq2WqstnmUPZQVlTtWIZKgvasq0kXFLAkqZWRvhywLSG+s+1Gg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDIk0fvH7jt8ZXyWO9sbweajltoYbG/7H34QTGDJ1fRaAIgZ+dhcyNng5fW6GLORn43Iv38MaC6CVHaFtMGgbIMC50="}]}},"0.5.2":{"name":"node-xmpp-bosh","version":"0.5.2","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"},"_id":"node-xmpp-bosh@0.5.2","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"f9c62309a0c3bd4f8352b0e011ab7b06120ff320","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.5.2.tgz","integrity":"sha512-tjewDytwWdc+ha3gyGWtSSfRTkFupyKohcmN4frT3H41P882ROH1ftTseTr388NJrg4M69+9Oq9huFjxxy29BQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDn4zkGkNKqCPyPjDEtR2PLhYfWF3L9KpcxphT+eihZPwIgSdMVXgWpPvSQBGRp+l3CuRdE+FiAtmntJXMAeO+vESE="}]}},"0.5.3":{"name":"node-xmpp-bosh","version":"0.5.3","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"},"_id":"node-xmpp-bosh@0.5.3","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.0.104","_nodeVersion":"v0.4.7","_defaultsLoaded":true,"dist":{"shasum":"c5d992509873ca890fae1f4543a8fc3955c32cb6","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.5.3.tgz","integrity":"sha512-OBcvIc/RDcyYKNBa42qNBSPOtH0gkzQDTkP0XmyEd5OXUvIEBo8Oakp73Rr8wdTrQiDIc2ZcLgg2jkaXgIq4CQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAvVCUB4ABGzU9S6loNWowNf8k1yLt50uKjEsuB886K8AiAzFiaDOj96yAOiY3Og15HJdSJN1JhqBeDwYjrVVO1NAQ=="}]}},"0.5.4":{"name":"node-xmpp-bosh","version":"0.5.4","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_npmUser":{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"},"_id":"node-xmpp-bosh@0.5.4","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"5e7cf92491eaa3a07b7d237210bea591d5e92b6b","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.5.4.tgz","integrity":"sha512-DmocKv/+WAjvUYvBNyiO2F/7Rdf4QuwIBYoMxpwsHWsZ2qLPOkzOMML3HZaKSfJcyacv8pbDQjmGEpF5sKL76w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICgfSCuUnAMMxBXUdzVqr5c4K4dg6mB89SaWrq+7RyW4AiBGg3gjfEr1NhiMBGI1nq0t54+ttxEsG0lsyiubyMPsoA=="}]}},"0.5.5":{"name":"node-xmpp-bosh","version":"0.5.5","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_npmUser":{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"},"_id":"node-xmpp-bosh@0.5.5","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"f60e051a600f17b1848b91053b99c6ab9875bcfd","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.5.5.tgz","integrity":"sha512-zLqnrLAZfCQcqWsfxTsBPXyhwhdr0F1XN3O6zQcf79Xi/w4AfVbni0FSvTV6Vm64E+RtNtkL155gZDaZ+lOcJQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGgoA/r2BxchKkENi3YuQox0fgduHcquMkQ2qXjx5S+tAiEA5cCqeRoAqzW0rEOrgnAbVI9pwlnTt5tlkdBMNolMPvs="}]}},"0.5.6":{"name":"node-xmpp-bosh","version":"0.5.6","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.2.0","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","jsdom":">= 0.2.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket-server":">= 1.4.04","websocket":">= 0.0.16"},"repositories":[{"type":"svn","path":"http://node-xmpp-bosh.googlecode.com/svn/trunk/"}],"homepage":"http://code.google.com/p/node-xmpp-bosh/","bugs":{"name":"http://code.google.com/p/node-xmpp-bosh/issues/list"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Satyam Shekhar","email":"satyamshekhar@gmail.com","url":"http://satyamshekhar.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_npmUser":{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"},"_id":"node-xmpp-bosh@0.5.6","devDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.0-alpha-6","_nodeVersion":"v0.6.5","_defaultsLoaded":true,"dist":{"shasum":"653cec316a9b1c6a91d69b268b1d63cee7f70c8f","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.5.6.tgz","integrity":"sha512-45BU3gpLFVd5VN4px6NAzTcdHSWntpr7AcHOF5kEkrHwtVplZhba76nTU0AkLHmUOsB9XI8kckfHMIvqLP9yUA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCmOmZYo6QU9Tay76mHgqTcwjsMIYY+cyyuSuVk3xi7CgIhAOqC42LQf0a3GnjITF1HDRBpNOWzBYh4xACQAf0sCkjR"}]}},"0.6.1":{"name":"node-xmpp-bosh","version":"0.6.1","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":">=1.4.5","ltx":">= 0.0.4","node-uuid":">= 0.0.0","tav":">= 0.1.0","underscore":">= 1.1.5","eventpipe":"= 0.0.3","dns-srv":">= 0.0.6","semver":">= 1.0.8","websocket":"~1.0.4","log4js":">= 0.4.2"},"devDependencies":{"jsdom":">= 0.2.0","jslint":">= 0.1.2"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"name":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.4.1"},"_npmUser":{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"},"_id":"node-xmpp-bosh@0.6.1","_engineSupported":true,"_npmVersion":"1.1.0-beta-4","_nodeVersion":"v0.6.6","_defaultsLoaded":true,"dist":{"shasum":"73363bd8807ae1445785094f419a77ec0208b3a4","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.6.1.tgz","integrity":"sha512-kyORtMbELIUEfgRok3znkPuZY1JWt2BdNTOlaPRTGYke1SKWZXXh8V6sAqTo9JhwVysRfX94UN9+GWxzuhwxbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCllBa1PknKMWjWcd0uSyiUoOv3W0r0hriowQkIA+RYGAIhAPDldq7Qr3f1p4AwxzTXH+WpQVZe5DDuq+VteEALtXb7"}]},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* Chunked responses (due to node.js)\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see README.TXT for details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: http://code.google.com/p/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server [http://localhost:5280/](http://localhost:5280/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n       \n\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan EventPipe.\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an EventEmitter.\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [websocket] (https://github.com/Worlize/WebSocket-Node)\n* [log4js] (http://log4js.berlios.de/)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [ejabberd](http://ejabberd.im/) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n"},"0.6.2":{"name":"node-xmpp-bosh","version":"0.6.2","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~1.6.1","ltx":"~0.1.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"~0.0.6","semver":"~1.0.8","ws":"~0.4.19","log4js":"~0.5.2"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":"https://github.com/dhruvbird/node-xmpp-bosh/issues","maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.19"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server [http://localhost:5280/](http://localhost:5280/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n       \n\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan EventPipe.\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an EventEmitter.\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [log4js] (http://log4js.berlios.de/)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [ejabberd](http://ejabberd.im/) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","_id":"node-xmpp-bosh@0.6.2","dist":{"shasum":"da4deebddee90e06d27563a58b89c35fb3bbfaf4","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.6.2.tgz","integrity":"sha512-pzyRk9N6vyscHu4agZhz0+Y09wA3i2EhbA5Kln1AVBpAQt9H0zR+NI3uIah8FVsLpka5T6R51Bh5iX9KfHWCLA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDkc3gL9z/S+xPNmQnUT3MuKBo8cZl8rQdk8EfMW076PAiEA1z1YXGgLNA16t/W+CGH35VIYhbI7qbNl40AURq5h7qQ="}]},"_npmVersion":"1.1.49","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}},"0.6.3":{"name":"node-xmpp-bosh","version":"0.6.3","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~1.6.1","ltx":"~0.1.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"~0.0.6","semver":"~1.0.8","ws":"~0.4.19","log4js":"~0.5.2"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":"https://github.com/dhruvbird/node-xmpp-bosh/issues","maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server [http://localhost:5280/](http://localhost:5280/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan EventPipe.\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an EventEmitter.\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [log4js] (http://log4js.berlios.de/)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [ejabberd](http://ejabberd.im/) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","_id":"node-xmpp-bosh@0.6.3","dist":{"shasum":"a8fbc96a08b95e900838cf5ee0a1ce40fdbf56c3","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.6.3.tgz","integrity":"sha512-yZR8gAVI7fhFO9d7WQMY9uP8zgYOJ4/igMhEEKmfywUYCJPSki5r2hznzmNaJhi923IHyaVULa7DOsIpWJyX6A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB76IunCEd35BS+sH2Qs658ro+gVZvieIT/rbtWbgFY1AiEAlJ7LJIGj2TOjCL+tjKrimbmqlRY67KR0D3ihd3pBJZI="}]},"_npmVersion":"1.1.49","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}},"0.7.0":{"name":"node-xmpp-bosh","version":"0.7.0","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.1.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"~0.0.6","semver":"~1.0.8","ws":"= 0.4.19","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"name":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"},"_id":"node-xmpp-bosh@0.7.0","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"76fc94fa878fcb5ba0581bc1018ba9d260913048","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.0.tgz","integrity":"sha512-H3digPfeCOEkQvIWamfok0buU1cytFl8x1rxZDX0N3lrxIHSgDji5HUb6GbBZC7F6wMurzrXjYXHeybLIesisQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIEREJxUZ1GaKJF8D51qr/h6s7frKh0f/x3+sh5W9lfd9AiEAv3artObcuocYt5lNQv5snk0K+bL3kchFEgNknNqknH8="}]},"scripts":{},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan EventPipe.\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an EventEmitter.\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [ejabberd](http://ejabberd.im/) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n"},"0.7.1":{"name":"node-xmpp-bosh","version":"0.7.1","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.1.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"~0.0.6","semver":"~1.0.8","ws":"= 0.4.19","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"name":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"},"_id":"node-xmpp-bosh@0.7.1","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"ba1958989c7c4ba459c0e8b4f4ab975982c64972","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.1.tgz","integrity":"sha512-7LBiQ2QORBGN7amoy/k2Eb8a61iWInBDLdLaa0iegkHj58i08zHm+Ug8HaoprI88yiPJa9uHuq3nrdfh87qFhw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDBQBs/m68xu4CyygDLNh8KKWD3KRGa/aIO7jqFLNjgIwIgKUtYwKS2RGPSoCz/0PaANux5wRfudAOfEVy9VaAZqNg="}]},"scripts":{},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [ejabberd](http://ejabberd.im/) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n"},"0.7.2":{"name":"node-xmpp-bosh","version":"0.7.2","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"~0.0.6","semver":"~1.0.8","ws":"= 0.4.19","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"name":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Vanaryon","email":"val.saliou@gmail.com","url":"http://jappix.com/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"},"_id":"node-xmpp-bosh@0.7.2","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"e3f68d768168b690a15bddb529d2d6f552390a8c","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.2.tgz","integrity":"sha512-lkw88t4MEOcxH5YKJiu+a+le3hk6HfnPnOvU4H07p/SALyJXpk7Hpe1bX80wDIBq47EoUQQ4T4Lw+BK3JfN2bw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC/xUL4WXjNcKSBDXvqlfb/b21mP8nfGPlHciLYWL9yrAIhAIY8YkZZtULh+5RIiqL4J/6wTEFo1r4g7Pq1Sge79+au"}]},"scripts":{},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [ejabberd](http://ejabberd.im/) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n"},"0.7.3":{"name":"node-xmpp-bosh","version":"0.7.3","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"0.2.0","semver":"~1.0.8","ws":"= 0.4.19","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":"https://github.com/dhruvbird/node-xmpp-bosh/issues","maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://valeriansaliou.name/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [ejabberd](http://ejabberd.im/) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","readmeFilename":"README.md","_id":"node-xmpp-bosh@0.7.3","dist":{"shasum":"520d1cac49c0abbf46aa1bcf4a68e5fe1eeee406","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.3.tgz","integrity":"sha512-P3qCx+aFLt4WPETNVAS4xGYXTKTU2M/SgpnnyP3GZcEMERIqRj331ivGK04jP48SuaOYP/l0B7MeKHyi9R09YA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDOOLiaEcyGSFOEDYiNlNNY0JbWqkVkKyo3CfQnYEk5XAIhAL5sbA4C2QVvYFr/POOQRk/hpENC7GulFOBWYNDrgfR4"}]},"_from":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.3.tar.gz","_resolved":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.3.tar.gz","scripts":{},"_npmVersion":"1.2.17","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}},"0.7.4":{"name":"node-xmpp-bosh","version":"0.7.4","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"0.2.1","semver":"~1.0.8","ws":"= 0.4.19","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"name":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://valeriansaliou.name/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"scripts":{"start":"node run-server.js"},"_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"},"_id":"node-xmpp-bosh@0.7.4","optionalDependencies":{},"_engineSupported":true,"_npmVersion":"1.1.21","_nodeVersion":"v0.6.17","_defaultsLoaded":true,"dist":{"shasum":"ec6275c40b0c41328f8aae877299a5711f813364","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.4.tgz","integrity":"sha512-U34fPM8xUYL4tmCnOHCMcGY4c8ybPhuO1zmRnBnK9m1R/R+vSYOVTCJedwHtFAZgNR47qKyzGi/CJiGm7GyCyA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDkJhvaKDFyO8UcUEbbhk/qxF9UOY35ZYXoqjlMdEWHfQIgUZmCRgMrEtxQqeFZrGBbk8sp+P0EDZo/bBZyAdOsK4k="}]},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [ejabberd](http://ejabberd.im/) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n"},"0.7.5":{"name":"node-xmpp-bosh","version":"0.7.5","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"0.2.1","semver":"~1.0.8","ws":"= 0.4.19","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":"https://github.com/dhruvbird/node-xmpp-bosh/issues","maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://valeriansaliou.name/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"scripts":{"start":"node run-server.js"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **firewall**: An object (map) of type { allow: [ list... ], deny: [ list... ] }, where [ list... ] means an array of strings or regular expressions which are tested against the domain connected to. ONLY One of the 2 (deny or allow) shall be used depending on which array has values. The one that is non-empty shall be used. If both are empty (default), all connections are allowed. If both are non-empty, then the ALLOW list is used and ONLY connections to the domains listed in ALLOW are connected to **(default: { allow: [ ], deny: [ ] })**\n\n* **route_filter**: If the route attribute is set, allow connections ONLY if the route attribute matches the regex below **(default: /.\\*/)**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [Metronome](http://www.lightwitch.org/metronome) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n    8. [ejabberd](http://www.ejabberd.im/) hosted at [Jabber.fr](http://jabber.fr/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","readmeFilename":"README.md","_id":"node-xmpp-bosh@0.7.5","dist":{"shasum":"80a364fc232b72c01bf5d43a4717d393ccd3418c","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.5.tgz","integrity":"sha512-Y3diSrPLFCmzYoiHoPp3EVLxDs6jaqLNT4vGOcb7fUyeoaSGoYImj2jujH1qLzAZ3RKmhR/r9gcEb8unDt9DbQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICCp1tRBJz9YGRO0mbUePKQOXjT/6P40NakKUR4woC8YAiAm7IPox9bgc60KVOXauop17aisVyUbXbwdLcIJ8EdZcw=="}]},"_from":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.5.tar.gz","_resolved":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.5.tar.gz","_npmVersion":"1.2.17","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}},"0.7.6":{"name":"node-xmpp-bosh","version":"0.7.6","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"0.3.0","semver":"~1.0.8","ws":"= 0.4.19","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":"https://github.com/dhruvbird/node-xmpp-bosh/issues","maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://valeriansaliou.name/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"},{"name":"Gavin Llewellyn","email":"gavin@llewnet.co.uk"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"scripts":{"start":"node run-server.js"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **firewall**: An object (map) of type { allow: [ list... ], deny: [ list... ] }, where [ list... ] means an array of strings or regular expressions which are tested against the domain connected to. ONLY One of the 2 (deny or allow) shall be used depending on which array has values. The one that is non-empty shall be used. If both are empty (default), all connections are allowed. If both are non-empty, then the ALLOW list is used and ONLY connections to the domains listed in ALLOW are connected to **(default: { allow: [ ], deny: [ ] })**\n\n* **route_filter**: If the route attribute is set, allow connections ONLY if the route attribute matches the regex below **(default: /.\\*/)**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [Metronome](http://www.lightwitch.org/metronome) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n    8. [ejabberd](http://www.ejabberd.im/) hosted at [Jabber.fr](http://jabber.fr/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","readmeFilename":"README.md","_id":"node-xmpp-bosh@0.7.6","dist":{"shasum":"a4d27804185377df03a267c662faa88efa909c19","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.6.tgz","integrity":"sha512-cG1u+jCwW7MaEKDgRjG5PfF8eKPRnmpIJvTvH8JlLI3sirTge3FfIlSl0z9f/WFNuHXGtmLWIreGZqya/9iJCA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDoFcYCRDn3JStiXovDp4XaWaeDjxJjtGKRlnQD+6ZCGgIgMY0cJD1IW5w0FzG1oB6jmJHVr8N45Mgug4wRo/cfsGg="}]},"_from":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.6.tar.gz","_resolved":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.6.tar.gz","_npmVersion":"1.2.17","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}},"0.7.7":{"name":"node-xmpp-bosh","version":"0.7.7","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"0.3.0","semver":"~1.0.8","ws":"= 0.4.29","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"url":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://valeriansaliou.name/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"},{"name":"Gavin Llewellyn","email":"gavin@llewnet.co.uk"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"scripts":{"start":"node run-server.js","test":"bash tests/all.sh"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **firewall**: An object (map) of type { allow: [ list... ], deny: [ list... ] }, where [ list... ] means an array of strings or regular expressions which are tested against the domain connected to. ONLY One of the 2 (deny or allow) shall be used depending on which array has values. The one that is non-empty shall be used. If both are empty (default), all connections are allowed. If both are non-empty, then the ALLOW list is used and ONLY connections to the domains listed in ALLOW are connected to **(default: { allow: [ ], deny: [ ] })**\n\n* **route_filter**: If the route attribute is set, allow connections ONLY if the route attribute matches the regex below **(default: /.\\*/)**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n* **websocket_ping_interval**: The period, in seconds, between sending WebSocket ping frames to each client. If a client fails to respond with a pong frame twice in a row, the connection will be closed. Set to 0 to disable sending of WebSocket pings. **(default: 30)**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [Metronome](http://www.lightwitch.org/metronome) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n    8. [ejabberd](http://www.ejabberd.im/) hosted at [Jabber.fr](http://jabber.fr/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","readmeFilename":"README.md","repository":"[Circular ~.repositories.0]","_id":"node-xmpp-bosh@0.7.7","dist":{"shasum":"830cc93575eb9908c7999e588217b039593477f5","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.7.tgz","integrity":"sha512-4+TyFqs9iRKmTTEszhFRh1hif/XsmMQjuCfcaICOZcpmCyvu8UDZD1iu0n1HFHW7zFXA8LmO3BdP1qEwrGJeIg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICZA2ia9wB3BU76iwgkwAuBCL+VpSkb4S2QcRHcSeYfTAiEA4M0ItvCK6e1kypF0Szh0eMiwzFtPcUqmaKYSlNNAJw4="}]},"_from":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.7.tar.gz","_resolved":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.7.tar.gz","_npmVersion":"1.3.8","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}},"0.7.8":{"name":"node-xmpp-bosh","version":"0.7.8","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"0.3.0","semver":"~1.0.8","ws":"= 0.4.29","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"url":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://valeriansaliou.name/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"},{"name":"Gavin Llewellyn","email":"gavin@llewnet.co.uk"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"scripts":{"start":"node run-server.js","test":"bash tests/all.sh"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **firewall**: An object (map) of type { allow: [ list... ], deny: [ list... ] }, where [ list... ] means an array of strings or regular expressions which are tested against the domain connected to. ONLY One of the 2 (deny or allow) shall be used depending on which array has values. The one that is non-empty shall be used. If both are empty (default), all connections are allowed. If both are non-empty, then the ALLOW list is used and ONLY connections to the domains listed in ALLOW are connected to **(default: { allow: [ ], deny: [ ] })**\n\n* **route_filter**: If the route attribute is set, allow connections ONLY if the route attribute matches the regex below **(default: /.\\*/)**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n* **websocket_ping_interval**: The period, in seconds, between sending WebSocket ping frames to each client. If a client fails to respond with a pong frame twice in a row, the connection will be closed. Set to 0 to disable sending of WebSocket pings. **(default: 30)**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [Metronome](http://www.lightwitch.org/metronome) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n    8. [ejabberd](http://www.ejabberd.im/) hosted at [Jabber.fr](http://jabber.fr/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","readmeFilename":"README.md","repository":"[Circular ~.repositories.0]","_id":"node-xmpp-bosh@0.7.8","dist":{"shasum":"a1fa373cc29c48bfd2bab755d35d774a3e13a2fc","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.8.tgz","integrity":"sha512-utObcGhx1Janm1RWrgZGb15g8cmxpaVQUzDV7t6OssNIh3C3AgOfBWc5UCnTlnFSxiwYcZbhiiRWh/pCWFDFdQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH6oajSlNQSbiZvv3z3Qw1PhOWUgQnPtv6cJA6jA8BAUAiEA5Wm9J9jN0LsMtNDThYiGFLs+iYBvns6mw+K7ZgLO9UQ="}]},"_from":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.8.tar.gz","_resolved":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.8.tar.gz","_npmVersion":"1.3.8","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}},"0.7.9":{"name":"node-xmpp-bosh","version":"0.7.9","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"0.3.0","semver":"~1.0.8","ws":"= 0.4.29","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"url":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://valeriansaliou.name/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"},{"name":"Gavin Llewellyn","email":"gavin@llewnet.co.uk"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"scripts":{"start":"node run-server.js","test":"bash tests/all.sh"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **firewall**: An object (map) of type { allow: [ list... ], deny: [ list... ] }, where [ list... ] means an array of strings or regular expressions which are tested against the domain connected to. ONLY One of the 2 (deny or allow) shall be used depending on which array has values. The one that is non-empty shall be used. If both are empty (default), all connections are allowed. If both are non-empty, then the ALLOW list is used and ONLY connections to the domains listed in ALLOW are connected to **(default: { allow: [ ], deny: [ ] })**\n\n* **route_filter**: If the route attribute is set, allow connections ONLY if the route attribute matches the regex below **(default: /.\\*/)**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n* **websocket_ping_interval**: The period, in seconds, between sending WebSocket ping frames to each client. If a client fails to respond with a pong frame twice in a row, the connection will be closed. Set to 0 to disable sending of WebSocket pings. **(default: 30)**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [Metronome](http://www.lightwitch.org/metronome) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n    8. [ejabberd](http://www.ejabberd.im/) hosted at [Jabber.fr](http://jabber.fr/)\n\n* Clients:\n    1. [strophe.js] (http://github.com/metajack/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed)\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (http://github.com/metajack/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","readmeFilename":"README.md","repository":"[Circular ~.repositories.0]","_id":"node-xmpp-bosh@0.7.9","dist":{"shasum":"d485973266fec13980a34afe3e0a453c1fc04005","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.9.tgz","integrity":"sha512-f/CNTX3mcZkYKeZuy37eVgRrod4ZFaifbjyeFROvGeEHzbwP8RgWtqSEvUp+hm3A0FVbi6lCYQQZPtvF0gWmQQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCjkI92L5usuM3dZArx+4arQWv2ans8+KyfXp06GnW6pAIgfcGAKfvlkhyj3Ov1Ju7SMcr5xwJiBkLg97wRgxQ5koc="}]},"_from":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.9.tar.gz","_resolved":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.9.tar.gz","_npmVersion":"1.3.8","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}},"0.7.10":{"name":"node-xmpp-bosh","version":"0.7.10","main":"./src/main","bin":{"bosh-server":"./run-server.js"},"description":"An XMPP BOSH server written for node.js in javascript","author":{"name":"Dhruv Matani"},"dependencies":{"node-expat":"~2.0.0","ltx":"~0.2.2","node-uuid":"~1.3.3","tav":"~0.1.0","underscore":"~1.3.3","eventpipe":"~0.0.5","dns-srv":"0.3.0","semver":"~1.0.8","ws":"= 0.4.29","node-lumberjack":"= 0.0.4","ejs":"~0.8.3"},"devDependencies":{"jsdom":"~0.2.15","jslint":"~0.1.9"},"repositories":[{"type":"git","path":"git://github.com/dhruvbird/node-xmpp-bosh.git"}],"homepage":"https://github.com/dhruvbird/node-xmpp-bosh","bugs":{"url":"https://github.com/dhruvbird/node-xmpp-bosh/issues"},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"contributors":[{"name":"Valérian Saliou","email":"val.saliou@gmail.com","url":"http://valeriansaliou.name/"},{"name":"Emmanuel Gil Peyrot","email":"linkmauve@linkmauve.fr","url":"http://linkmauve.fr/"},{"name":"Julien Genestoux","email":"julien.genestoux@gmail.com","url":"http://ouvre-boite.com/"},{"name":"Sonny Piers","email":"sonny@fastmail.net"},{"name":"Aria Stewart","email":"aredridel@nbtsc.org"},{"name":"Gavin Llewellyn","email":"gavin@llewnet.co.uk"}],"licenses":[{"type":"MIT"}],"engines":{"node":">=0.6.12"},"scripts":{"start":"node run-server.js","test":"bash tests/all.sh"},"readme":"# node-xmpp-bosh\n\nAn XMPP BOSH & WebSocket server (connection manager) written using node.js in Javascript\n\nProject Home Page:\n[https://github.com/dhruvbird/node-xmpp-bosh](https://github.com/dhruvbird/node-xmpp-bosh)\n\n### [What's Changed?](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\n\nPlease see [whats_changed.md](https://github.com/dhruvbird/node-xmpp-bosh/blob/master/whats_changed.md)\nto see the major changes in releases.\n\n\n### Quick Start Guide\n\n1. To run, type:\n```\n$ bosh-server\n```\nThe BOSH service is now available at: [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/)\n\n2. For options, type:\n```\n$ bosh-server --help\n```\n\n3. For running from within a node application, type:\n\n    ```\n    $ node\n    > var nxb    = require(\"node-xmpp-bosh\");\n    > var server = nxb.start_bosh();\n    > \n    > // To stop, type:\n    > // server.stop();\n    >\n    ```\n\n4. For a more complex setup, see the file main.js\n\n\n\n### Features\n\n* Multiple Streams\n* Stream restarts\n* Request & Response Acknowledgements\n* STARTTLS support for connecting to the backend XMPP server (tested with google talk & jabber.org)\n* Custom stream attributes on stream restart requests\n* Custom attributes supported during session creation (passed on to handlers)\n* A client may request a custom inactivity period from the server by setting the 'inactivity' attribute in the session creation request\n* HTTP POST & GET (for older browsers) are suported (see below for more details)\n* A websocket server on the same port as the BOSH server\n* Benchmarks: https://github.com/dhruvbird/node-xmpp-bosh/wiki/Benchmarks\n* Monitor the BOSH server at [http://localhost:5280/http-bind/](http://localhost:5280/http-bind/) (available only if you have node-xmpp-bosh running on your system)\n* Get detailed information about the running service at [http://localhost:5280/http-bind/sysinfo/](http://localhost:5280/http-bind/sysinfo/) (available only if you have node-xmpp-bosh running on your system)\n\n\n### Features not Planned\n\n* gzip support for communicating with the backend XMPP server\n\n\n### Configuration parameters\n\nThe following parameters can be set in the configuration file (see the\nfile bosh.conf.example.js for an example). The limits mentioned below\nare all HARD limits. Soft limits are set internally, but can never\nexceed the HARD limits. You can run node-xmpp-bosh with a config file\nas:\n```\n$ bosh-server --config=PATH_TO_CONFIG\n```\n\nNote: The **=** sign is important here. Replacing the equal sign with a space will NOT work.\n\n* **path**: The path to listen on **(default: /http-bind/)**\n\n* **port**: The port to listen on **(default: 5280)**\n\n* **host**: The host to listen on **(default: 0.0.0.0)**\n\n* **logging**: The logging level to start the BOSH server with **(default: INFO)**. Options: ALL, TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF.\n\n* **max_data_held**: The maximum allowable number of bytes that a POST request body may contain. Any request exceeding this value will be dropped **(default: 100000)**\n\n* **max_xmpp_stanza_size**: The maximum size of an incoming XMPP\n    stanza in bytes. If the stanza size exceeds this size, then the stream is terminated **(default: 500000)**\n\n* **max_bosh_connections**: The maximum number of simultaneous connections that the BOSH server will entertain for any open BOSH session **(default: 2)**\n\n* **window_size**: The size of the window when entertaining out of order requests **(default: 2)**\n\n* **default_inactivity**: The default (or minimum) inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 70)**\n\n* **max_inactivity**: The maximum inactivity value (in second) that the BOSH server will set for the session inactivity timeout **(default: 160)**\n\n* **http_headers**: A JSON (object) containing HTTP headers to pass on along with the response **(default: { })**\n\n* **no_tls_domains**: A list of Domains for which TLS should NOT be used if the XMPP server supports STARTTLS but does NOT require it **(default: [ ])**\n\n* **firewall**: An object (map) of type { allow: [ list... ], deny: [ list... ] }, where [ list... ] means an array of strings or regular expressions which are tested against the domain connected to. ONLY One of the 2 (deny or allow) shall be used depending on which array has values. The one that is non-empty shall be used. If both are empty (default), all connections are allowed. If both are non-empty, then the ALLOW list is used and ONLY connections to the domains listed in ALLOW are connected to **(default: { allow: [ ], deny: [ ] })**\n\n* **route_filter**: If the route attribute is set, allow connections ONLY if the route attribute matches the regex below **(default: /.\\*/)**\n\n* **pidgin_compatible**: Set to 'true' if you want to be able to use pidgin (any any other libpurple based client) with node-xmpp-bosh. If you set this to 'true', then you lose the ability to create multiple streams on a session **(default: false)**\n\n* **trim_default_length**: The maximum length of an XML stanza to be printed. Set to -1 for unlimited line length. **(default: 256)**\n\n* **system_info_password**: The password used to protect the /PATH/sysinfo/ URL. The username to use when prompted for authentication is 'admin' **(default: [not set])**\n\n* **websocket_ping_interval**: The period, in seconds, between sending WebSocket ping frames to each client. If a client fails to respond with a pong frame twice in a row, the connection will be closed. Set to 0 to disable sending of WebSocket pings. **(default: 30)**\n\n### Architecture\n\nThe project itself is divided into 4 main components as of now.\n\n1. A BOSH front end (bosh.js). This starts and HTTP server and manages\nthe BOSH sessions and XMPP streams on those sessions. Multiple\nStreams, message acks, etc... and handled by this component. This is\nan [EventPipe](https://github.com/dhruvbird/eventpipe).\n\n2. An XMPP (Jabber) Proxy that is responsible for making single client\nconnections to an XMPP server (xmpp-proxy.js). STARTTLS and any other\nXMPP specific features are handled by this component.  This can be\nreplaced with any other proxy component (such as 0MQ) that connects to\nthe backend server using any custom protocol. You could in theory\nwrite a Yahoo! Proxy that presents XMPP compliant XML stanzas to its\nusers but makes HTTP REST calls to communicate with the Yahoo! chat\nservers.  This is an\n[EventEmitter](http://nodejs.org/api/events.html).\n\n3. An endpoint lookup service (lookup-service.js) that implements\nrules for XMPP service endpoint discovery. This currently encodes\nvarious rules to try in order for discovering the service endpoint.\n\n4. An XMPP Proxy Connection (the glue) that connects the BOSH service\nto the XMPP Proxy (xmpp-proxy-connector.js). Using this abstraction,\nyou can connect different (or event multiple proxies) to the BOSH\nservice at the same time.\n\n\nYou can add more components such as a mailing service that sends\nemails to clients at their email addresses if the BOSH server is not\nable to send them certain messages (see the no-client event below).\n\n\n### Events Emitted by the BOSH service\n\n1. **stream-add**: Emitted when a new stream is requested by a client\n\n2. **stream-terminate**: Emitted when a client requests stream\ntermination\n\n3. **stream-restart**: Emitted when a client requests a stream restart\n\n4. **nodes**: Emitted when the client wants to send one or more XML\nstanzas to the backend server\n\n5. **no-client**: Emitted when a packet to be delivered to the client\ntimed out because the client was unavailable for more than a certain\namount of time.\n      \n6. **error**: Emitted when there is an irrecoverable error. You should\ntypically restart the service when this is emitted.\n\n7. **response-acknowledged**: Emitted when a certain response was\nacknowledged by the client (i.e. Client sent an ACK for a certain\nresponse that was sent to it).\n\n### Events Understood by the BOSH service\n\n1. **response**: Emitted (typically by the Connector) when the backend\nserver wants to send the client some XML stanza.\n\n2. **terminate**: Emitted when the backend server wants to terminate\nthe client's connection (stream).\n\n3. **stream-added**: Emitted when the backend server starts a new XMPP\nstream for the client.\n\n4. **stream-restarted**: Emitted when the backend server restarts an\nexisting XMPP stream for the client.\n\n### Custom attributes on BOSH streams\n\n1. If a session creation request has the 'ua' attribute, it shall be\nincluded in all events that involve that session. This is useful when\nembedding this library.\n\n2. If a stream restart request has the 'stream_attrs' attribute set,\nthen the value of that attribute is assumed to be a stringified JSON\nobject which is subsequently parsed and every key/value pair is added\nas an attribute of the stream \\<stream:stream\\> tag during this stream\nrestart. If you provide attributes such as 'xmlns' that the BOSH proxy\nwould have added by default, the defaults are ignored and the user set\nattribute values are preferred.\n\n3. The 'from' attribute (if sent by the client) is echoed back to the\nclient by the server as the 'to' attribute in the session (or stream)\ncreation response.\n\n### HTTP GET support\n      \nThe URL for the GET handler is the same as that for the post handler.\nHowever, instead of passing in the data in the request body, it is\npassed in via the *data=* GET query parameter. JSONP is also supported\nif the *callback=* GET query parameter is supplied.\n\n* Example with the request passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>\n    ```\n\n    Response:\n\n    ```\n    <body condition=\"item-not-found\" message=\"Invalid session ID\" type=\"terminate\"/>\n    ```\n\n* Example with the request and callback passed in as a GET parameter\n\n    ```\n    http://localhost:5280/http-bind/?data=<body/>&callback=res341\n    ```\n\n    Response:\n\n    ```\n    res341({\"reply\":\"<body xmlns=\"http://jabber.org/protocol/httpbind\" \n      condition=\"item-not-found\" message=\"Invalid session ID\" \n      type=\"terminate\"/>\"});\n    ```\n\n\n### References\n\n* [http://xmpp.org/extensions/xep-0124.html](http://xmpp.org/extensions/xep-0124.html)\n* [http://xmpp.org/extensions/xep-0206.html](http://xmpp.org/extensions/xep-0206.html)\n* [http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00](http://tools.ietf.org/html/draft-moffitt-xmpp-over-websocket-00)\n\n\n### Dependencies\n\n* [Node.js] (http://nodejs.org/)\n* [node-expat] (https://github.com/astro/node-expat)\n* [ltx] (https://github.com/astro/ltx)\n* [node-uuid](https://github.com/broofa/node-uuid)\n* [tav](https://github.com/akaspin/tav)\n* [underscore.js] (https://github.com/documentcloud/underscore)\n* [eventpipe] (https://github.com/dhruvbird/eventpipe)\n* [dns-srv] (https://github.com/dhruvbird/dns-srv)\n* [semver] (https://github.com/isaacs/node-semver)\n* [ws] (https://github.com/einaros/ws)\n* [node-lumberjack] (https://github.com/dhruvbird/node-lumberjack)\n* [ejs] (https://github.com/visionmedia/ejs)\n* [jsdom] (https://github.com/tmpvar/jsdom) for tests\n* [jslint] (https://github.com/reid/node-jslint) for running lintit.sh\n\n\n### Tested with\n\n* Servers:\n    1. [Metronome](http://www.lightwitch.org/metronome) hosted at [jappix.com](https://jappix.com/)\n    2. [M-Link](http://www.isode.com/products/m-link.html) hosted at [jabber.org](http://www.jabber.org/)\n    3. [Google Talk](http://www.google.com/talk/) hosted at [gmail.com](http://gmail.com/)\n    4. [Facebook](http://www.facebook.com/sitetour/chat.php) hosted at [chat.facebook.com](http://facebook.com/)\n    5. Pappu hosted at [talk.to](https://talk.to/)\n    6. [Prosody](http://prosody.im/) hosted at [dukgo.com](https://duck.co/#topic/28469000000637077)\n    7. [Openfire](http://www.igniterealtime.org/projects/openfire/) hosted at [ChatMe.im](http://chatme.im/)\n    8. [ejabberd](http://www.ejabberd.im/) hosted at [Jabber.fr](http://jabber.fr/)\n\n* Clients:\n    1. [strophe.js] (https://github.com/strophe/strophejs)\n    2. [JSJaC] (https://github.com/sstrigler/JSJaC) used at [jappix.org](http://jappix.org/)\n    3. [dojox.xmpp] (http://dojoapi-mirror.devs.nu/jsdoc/dojox/1.2/dojox.xmpp) (modified since node-xmpp-bosh doesn't support the authid attribute)\n    4. libpurple (pidgin as a client)\n    5. [strophe.js websocket client] (https://github.com/superfeedr/strophejs/tree/protocol-ed) [broken link]\n    6. [node-xmpp] (https://github.com/astro/node-xmpp)\n\n\n### Tested using\n\n1. [strophe.js] (https://github.com/strophe/strophejs)\n\n\n### Running tests\n```\n$ cd tests\n$ node basic.js [params]     # To check basic working\n$ node send_recv.js [params] # To check message sending/stress testing\n$ node stress.js [params]    # To stress test node-xmpp-bosh\n```\n\n\n### Scaling\n\n* node-xmpp-bosh allows you to set custom HTTP headers in the response\nto every valid request. You can use this in combination with the\n[nginx-sticky-module](http://code.google.com/p/nginx-sticky-module/)  to\nload-blance requests across multiple running BOSH server instances.\n\n* You can also load balance based on the HTTP PATH requested by the\nclient. You may set up node-xmpp-bosh to accept requests as long as\nthey begin with /PREFIX/ and set up nginx to route requests to\n/PREFIX/A/ to one instance and requests to /PREFIX/B/ to another\ninstance and so on.\n\n\n### Other Connection Managers:\n* [List on xmpp.org](http://xmpp.org/about-xmpp/technology-overview/bosh/#impl-cm)\n* [Punjab - Python & Twisted](http://code.stanziq.com/punjab)\n* [Chirkut - Python & Twisted](https://github.com/directi/chirkut)\n* [JabberHTTPBind - Java](http://blog.jwchat.org/jhb/)\n* [Araneo - Python & Twisted](http://blog.bluendo.com/ff/bosh-connection-manager-update)\n* [rhb - Ruby](http://rubyforge.org/projects/rhb/)\n* [Ejabberd websocket module](https://github.com/superfeedr/ejabberd-websockets)\n\n\n### Identi.ca groups:\n* [node-xmpp-bosh](http://identi.ca/group/nodexmppbosh)\n\n\n### Services using node-xmpp-bosh\n\nYou can find a list [here](https://github.com/dhruvbird/node-xmpp-bosh/wiki/Services-using-node-xmpp-bosh)\n","readmeFilename":"README.md","repository":"[Circular ~.repositories.0]","_id":"node-xmpp-bosh@0.7.10","dist":{"shasum":"daae21e37916ef1aa4c95466bdd45f9631bb389f","tarball":"https://registry.npmjs.org/node-xmpp-bosh/-/node-xmpp-bosh-0.7.10.tgz","integrity":"sha512-VbB6mwQq/Y6irotVG1NwnzGHrJ1ni6zt/tUxUPoK0KwZSuWg+HZwHBbyvUhVtRDqKba8vVkHOQqoGi/RYd2G4w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFTjXupol0JbECVrL5Po8Okr5umFSiCsDP9DySbNjOPAAiEA5s/TcmXT3MxKYj943f4GnQTto+BDA03aNutCZhiN/yU="}]},"_from":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.10.tar.gz","_resolved":"https://github.com/dhruvbird/node-xmpp-bosh/archive/v0.7.10.tar.gz","_npmVersion":"1.3.8","_npmUser":{"name":"dhruvbird","email":"dhruvbird@gmail.com"}}},"maintainers":[{"name":"dhruvbird","email":"dhruvbird@gmail.com"},{"name":"satyamshekhar","email":"satyamshekhar@gmail.com"}],"time":{"modified":"2022-06-21T23:43:28.772Z","created":"2011-03-21T15:50:00.113Z","0.0.1":"2011-03-21T15:50:01.210Z","0.0.2":"2011-03-25T07:53:48.878Z","0.0.3":"2011-03-28T19:45:05.435Z","0.0.4":"2011-03-31T08:02:19.919Z","0.0.5":"2011-04-02T07:50:12.614Z","0.0.6":"2011-04-05T10:22:38.640Z","0.0.7":"2011-04-05T11:58:16.171Z","0.0.8":"2011-04-08T14:02:10.226Z","0.0.9":"2011-04-14T06:12:49.935Z","0.0.10":"2011-04-17T09:38:29.735Z","0.1.0":"2011-04-20T11:39:25.056Z","0.1.1":"2011-04-21T10:29:18.119Z","0.1.2":"2011-04-21T13:36:42.083Z","0.1.3":"2011-04-22T09:14:01.176Z","0.1.4":"2011-04-27T17:08:14.906Z","0.1.6":"2011-05-01T11:45:09.053Z","0.1.7":"2011-05-02T12:20:24.675Z","0.1.8":"2011-05-02T13:02:28.884Z","0.1.9":"2011-05-03T11:42:15.382Z","0.1.10":"2011-05-03T13:51:33.290Z","0.1.11":"2011-05-11T09:42:39.508Z","0.1.12":"2011-05-14T17:02:12.757Z","0.1.13":"2011-05-18T10:42:11.505Z","0.1.14":"2011-05-24T13:28:36.225Z","0.1.15":"2011-05-27T07:41:45.716Z","0.2.0":"2011-06-06T13:47:50.563Z","0.2.1":"2011-06-07T08:50:10.336Z","0.2.2":"2011-06-07T14:29:18.550Z","0.2.3":"2011-06-10T05:06:30.827Z","0.3.0":"2011-06-14T17:51:08.319Z","0.3.1":"2011-06-17T17:11:53.296Z","0.3.2":"2011-06-20T10:58:22.779Z","0.3.3":"2011-07-09T06:43:36.427Z","0.4.0":"2011-07-09T06:44:04.743Z","0.4.1":"2011-08-15T17:10:28.664Z","0.4.2":"2011-09-22T12:13:40.121Z","0.4.3":"2011-10-05T20:16:48.178Z","0.4.4":"2011-10-13T15:16:23.933Z","0.4.5":"2011-10-14T16:46:48.830Z","0.4.6":"2011-10-17T14:01:29.386Z","0.4.7":"2011-10-18T11:05:54.884Z","0.4.8":"2011-10-18T12:29:12.994Z","0.5.0":"2011-11-09T10:27:25.284Z","0.5.1":"2011-11-11T17:37:20.868Z","0.5.2":"2011-11-12T04:29:29.016Z","0.5.3":"2011-12-15T10:42:45.887Z","0.5.4":"2012-01-02T09:14:47.210Z","0.5.5":"2012-01-03T09:32:45.963Z","0.5.6":"2012-01-06T13:16:03.742Z","0.6.1":"2012-04-06T19:11:45.496Z","0.6.2":"2012-09-10T10:11:17.768Z","0.6.3":"2012-09-11T11:15:59.778Z","0.7.0":"2012-11-26T02:50:33.684Z","0.7.1":"2013-01-08T05:58:00.146Z","0.7.2":"2013-02-08T16:27:30.605Z","0.7.3":"2013-04-14T05:24:57.409Z","0.7.4":"2013-05-18T17:41:17.227Z","0.7.5":"2013-06-06T17:02:39.333Z","0.7.6":"2013-06-08T06:17:07.724Z","0.7.7":"2013-08-31T05:06:34.016Z","0.7.8":"2013-10-02T03:38:05.524Z","0.7.9":"2013-10-12T03:59:41.697Z","0.7.10":"2013-11-23T19:41:06.792Z"},"author":{"name":"Dhruv Matani"},"repository":"[Circular ~.repositories.0]"}