mirror of
https://github.com/socketio/socket.io.git
synced 2026-04-30 03:00:39 -04:00
39 lines
1.1 KiB
TypeScript
39 lines
1.1 KiB
TypeScript
import type { NitroApp } from "nitropack";
|
|
import { Server as Engine } from "engine.io";
|
|
import { Server } from "socket.io";
|
|
import { defineEventHandler } from "h3";
|
|
|
|
export default defineNitroPlugin((nitroApp: NitroApp) => {
|
|
const engine = new Engine();
|
|
const io = new Server();
|
|
|
|
io.bind(engine);
|
|
|
|
io.on("connection", (socket) => {
|
|
// ...
|
|
});
|
|
|
|
nitroApp.router.use("/socket.io/", defineEventHandler({
|
|
handler(event) {
|
|
engine.handleRequest(event.node.req, event.node.res);
|
|
event._handled = true;
|
|
},
|
|
websocket: {
|
|
open(peer) {
|
|
// crossws >= 0.3.0
|
|
// @ts-expect-error private method and property
|
|
engine.prepare(peer._internal.nodeReq);
|
|
// @ts-expect-error private method and property
|
|
engine.onWebSocket(peer._internal.nodeReq, peer._internal.nodeReq.socket, peer.websocket);
|
|
|
|
// crossws < 0.3.0
|
|
// const context = peer.ctx.node;
|
|
// // @ts-expect-error private method
|
|
// engine.prepare(context.req);
|
|
// // @ts-expect-error private method
|
|
// engine.onWebSocket(context.req, context.req.socket, context.ws);
|
|
}
|
|
}
|
|
}));
|
|
});
|