graphql-factory-socket.io
v0.1.0
Published
GraphQL Factory Handler for Socket.IO
Downloads
11
Readme
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 socketevent
- name of the event to emit response withlib
- 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 therootValue
before the request is sent. Function takes (value
,request
) as arguments - [
contextValue
] {Object|Function
} - Object or function used to modify thecontextValue
before the request is sent. Function takes (value
,request
) as arguments - [
variableValues
] {Object|Function
} - Object or function used to modify thevariableValues
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 objectschema
- Name of the schema to make the request onrequestString
- The graphql request stringrootValue
- OptionalrootValue
contextValue
- OptionalcontextValue
variableValues
- OptionalvariableValues
operationName
- OptionaloperationName
Successful requests will have no or empty errors
array in the response object