Custom Websocket-Server Implementation
info
This is an advanced feature. In most cases you don't need to use this.
SocketDB allows you to pass a custom websocket server implementation. This is useful if you want to use a different websocket server implementation than the one provided by SocketDB. Or if you want to use a different connection protocol, like HTTP instead of Websockets.
By default SocketDB uses ws as websocket server implementation.
Example
import { createEventBroker, SocketServer } from '@socketdb/core';
export function createMyCustomWebsocketServer(): SocketServer {
let ids = 0;
const server = MyWebsocketServerImplementation.create();
return {
onConnection(callback) {
server.on('connection', (socket) => {
const connectionId = ids++;
const { notify, addListener, removeListener } = createEventBroker();
socket.on('message', (packet: string) => {
const { event, data } = JSON.parse(packet);
notify(event, data);
});
const sessionInformation = socket.getSessionInformation();
callback(
{
onDisconnect(callback) {
socket.on('close', callback);
},
on: addListener,
off: removeListener,
send(event, data) {
socket.send(JSON.stringify({ event, data }));
},
close() {
socket.close();
},
},
connectionId + '',
sessionInformation // here you can pass session information, like user data, etc. to be available to plugin hooks
);
});
},
listen(port, callback) {
server.listen(port, callback);
},
};
}
const server = SocketDBServer({
socketServer: createMyCustomWebsocketServer(),
});