0.1.0 • Published 7 years ago

graphql-factory-socket.io v0.1.0

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

GraphQL Factory Socket.IO

GraphQL Factory handler for Socket.IO

Example

Server

import SocketIO from 'socket.io'
import http from 'http'
import * as graphql from 'graphql'
import GraphQLFactory from 'graphql-factory'
import factorySocketIO from 'graphql-factory-socket.io'
import definition from '../definition'

const GRAPHQL_EVENT = 'graphql'
const factory = GraphQLFactory(graphql)
const lib = factory.make(definition)
const PORT = 8080
const app = http.createServer((req, res) => res.writeHead(200).end('OK!'))
const io = SocketIO(app)

app.listen(PORT)

io.on('connection', socket => {
  socket.on(
    GRAPHQL_EVENT,
    factorySocketIO(socket, GRAPHQL_EVENT, lib, {})
  )
})

Client

import SocketIOClient from 'socket.io-client'

const GRAPHQL_EVENT = 'graphql'
const socket = SocketIOClient('http://localhost:8080')
const requestId = Date.now()

// listen for events
socket.on(GRAPHQL_EVENT, res => {
  console.log(res)
})

// 
socket.emit(GRAPHQL_EVENT, {
  requestId,
  schema: 'Foo',
  requestString: 'query Query { listFoo }'
})

API

GQLFactorySIO (socket:Socket, event:String, lib:GQLFactoryLibrary, [options:Object])

Creates a new socket.io handler

Parameters

  • socket - socket.io socket
  • event - name of the event to emit response with
  • lib - GraphQL Factory Library containing schema helper methods
  • [options]
    • timeout=10000 {Int}- Timeout in ms before a request fails with a timeout error
    • rootValue {Object|Function} - Object or function used to modify the rootValue before the request is sent. Function takes (value, request) as arguments
    • contextValue {Object|Function} - Object or function used to modify the contextValue before the request is sent. Function takes (value, request) as arguments
    • variableValues {Object|Function} - Object or function used to modify the variableValues before the request is sent. Function takes (value, request) as arguments

Request Body

Requests must be sent using the POST method with a JSON formatted body containing and object with the following fields

  • requestId - Optional requestId to track requests. Will be returned in the response object
  • schema - Name of the schema to make the request on
  • requestString - The graphql request string
  • rootValue - Optional rootValue
  • contextValue - Optional contextValue
  • variableValues - Optional variableValues
  • operationName - Optional operationName

Successful requests will have no or empty errors array in the response object