--- icon: akar-icons:node-fill --- # Node.js > Integrate crossws with Node.js using ws or uWebSockets.js To integrate crossws with your Node.js HTTP server, you need to connect the `upgrade` event to the `handleUpgrade` method returned from the adapter. crossws uses a prebundled version of [ws](https://github.com/websockets/ws). ```ts import { createServer } from "node:http"; import crossws from "crossws/adapters/node"; const ws = crossws({ hooks: { message: console.log, }, }); const server = createServer((req, res) => { res.end( ``, ); }).listen(3000); server.on("upgrade", ws.handleUpgrade); ``` ## Adapter Hooks - `node:open (peer)` - `node:message (peer, data, isBinary)` - `node:close (peer, code, reason)` - `node:error (peer, error)` - `node:ping (peer)` - `node:pong (peer)` - `node:unexpected-response (peer, req, res)` - `node:upgrade (peer, req)` ::read-more See [`test/fixture/node.ts`](https://github.com/unjs/crossws/blob/main/test/fixture/node.ts) for demo and [`src/adapters/node.ts`](https://github.com/unjs/crossws/blob/main/src/adapters/node.ts) for implementation. :: ## uWebSockets You can alternatively use [uWebSockets.js](https://github.com/uNetworking/uWebSockets.js) for Node.js servers. First add `uNetworking/uWebSockets.js` as a dependency. ```ts import { App } from "uWebSockets.js"; import crossws from "crossws/adapters/uws"; const ws = crossws({ hooks: { message: console.log, }, }); const server = App().ws("/*", ws.websocket); server.get("/*", (res, req) => { res.writeStatus("200 OK").writeHeader("Content-Type", "text/html"); res.end( ``, ); }); server.listen(3001, () => { console.log("Listening to port 3001"); }); ``` ## Adapter Hooks - `uws:open (ws)` - `uws:message (ws, message, isBinary)` - `uws:close (ws, code, message)` - `uws:ping (ws, message)` - `uws:pong (ws, message)` - `uws:drain (ws)` - `uws:upgrade (res, req, context)` - `uws:subscription (ws, topic, newCount, oldCount)` ::read-more See [`test/fixture/node-uws.ts`](https://github.com/unjs/crossws/blob/main/test/fixture/node-uws.ts) for demo and [`src/adapters/node-uws.ts`](https://github.com/unjs/crossws/blob/main/src/adapters/node-uws.ts) for implementation. ::