Skip to content

Server

The server module creates a Socket.IO server with a full GraphQL execution pipeline, including live query support and schema transformation.

import { createServer } from '@requence/socketql/server'
const { server, namespace, liveQueryStore, attach, addSchema } = createServer({
path: '/ws/',
transports: ['websocket'],
redisUrl: 'redis://localhost:6379',
})

Use addSchema to register GraphQL type definitions and resolvers:

addSchema({
typeDefs: /* GraphQL */ `
type Query {
hello: String! @live
}
`,
resolvers: {
Query: {
hello: () => 'world',
},
},
})
import { createServer as createHTTPServer } from 'node:http'
const httpServer = createHTTPServer()
attach(httpServer)
httpServer.listen(4000)

Import from @requence/socketql/server/bun instead — it replaces attach with a handler() method:

import { createServer } from '@requence/socketql/server/bun'
const { addSchema, handler } = createServer({ path: '/ws/' })
addSchema({ typeDefs, resolvers })
export default { port: 4000, ...handler() }

Extend the GraphQL context per connection:

createServer({
extendContext: ({ socket }) => ({
userId: socket.handshake.auth.userId,
}),
})
createServer({
onConnect: (socket) => {
console.log('connected:', socket.id)
},
onDisconnect: (socket, reason) => {
console.log('disconnected:', socket.id, reason)
},
})