Files
xOld_appRoboticsDriver/node_modules/wss/index.js
2025-12-27 20:24:47 +01:00

55 lines
1.6 KiB
JavaScript

const {Server} = require('ws')
Server.prototype.listening = false
Server.prototype.listen = function (...args) {
return this._server
.listen(...args)
.once('listening', () => {
this.listening = true
})
}
Server.prototype.close = function (fn = Function.prototype) {
if (this.clients) {
for (const client of this.clients) client.terminate()
}
this._ultron.destroy()
this._ultron = null
return this._server.close((...args) => {
this.listening = false
fn(...args)
})
}
module.exports = Server // v 1
module.exports.createServerFrom = createServerFrom
module.exports.createServer = createServer
function createServerFrom (server, connectionListener, options = {}) {
if (typeof server === 'undefined') throw new Error('must provide server')
const wss = new Server(Object.assign(options, {server}))
return connectionListener
? wss.on('connection', connectionListener)
: wss
}
function createServer (options = {}, connectionListener) {
if (typeof options === 'function') {
connectionListener = options
options = {}
}
const server = createServerFor(options)
return createServerFrom(server, connectionListener) // v 2
function createServerFor (options) {
return options.key && options.cert || options.pfx
? require('https').createServer(options, requestListener)
: require('http').createServer(requestListener)
}
function requestListener (req, res) {
const {STATUS_CODES: {'426': status}} = require('http')
res.writeHead(426, {
'content-length': status.length,
'content-type': 'text/plain'
})
res.end(status)
}
}