onebots
Version:
基于icqq的多例oneBot实现
37 lines (36 loc) • 1.26 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Router = exports.WsServer = void 0;
const router_1 = __importDefault(require("@koa/router"));
const ws_1 = require("ws");
class WsServer extends ws_1.WebSocketServer {
constructor(options) {
super(options);
this.path = options.path;
}
}
exports.WsServer = WsServer;
class Router extends router_1.default {
constructor(server, options) {
super(options);
this.wsStack = [];
server.on("upgrade", (request, socket, head) => {
const { pathname } = new URL(request.url, `wss://localhost`);
const wsServer = this.wsStack.find(wss => wss.path === pathname);
if (!wsServer)
return socket.destroy();
wsServer.handleUpgrade(request, socket, head, function done(ws) {
wsServer.emit("connection", ws, request);
});
});
}
ws(path) {
const wsServer = new WsServer({ noServer: true, path });
this.wsStack.push(wsServer);
return wsServer;
}
}
exports.Router = Router;