Skip to content

Introduction

@requence/socketql is a Socket.IO-based GraphQL transport that provides real-time communication between server and client using live queries, subscriptions, and JSON diff-patching.

Terminal window
npm install @requence/socketql

The library ships four entry points:

Export PathDescription
@requence/socketql/serverServer-side for Node.js: createServer with attach
@requence/socketql/server/bunServer-side for Bun: createServer with handler
@requence/socketql/server/redisRedis adapter for multi-instance deployments
@requence/socketql/clientClient-side: createClient setup
@requence/socketql/client/reactReact hooks: useQuery, useMutation
  1. Server creates a Socket.IO namespace with a GraphQL execution layer
  2. Client connects via WebSocket and manages GraphQL operations transparently under the hood
  3. Live queries are tracked with resource identifiers — when the server invalidates an identifier, all subscribed queries re-execute and the diff is pushed to clients
// Server (Node.js)
import { createServer, defineSchema } from '@requence/socketql/server'
const mySchema = defineSchema({ typeDefs, resolvers })
const { attach } = createServer({
path: '/ws/',
schemas: [mySchema],
})
attach(httpServer)
// Server (Bun)
import { createServer, defineSchema } from '@requence/socketql/server/bun'
const mySchema = defineSchema({ typeDefs, resolvers })
const { handler } = createServer({
path: '/ws/',
schemas: [mySchema],
})
export default { port: 4000, ...handler() }
// Client
import { createClient } from '@requence/socketql/client'
const { client } = createClient({
path: '/ws/',
})