io-service
v0.0.4
Published
Socket.io based web framework
Downloads
9
Readme
io-service
Socket.io based web framework.
Installing
npm install io-service
Hello World
Server side
const { App } = require('io-service')
const app = new App()
app.on('greeting', (ctx) => {
ctx.socket.emit('greeting', `Hello ${ctx.body.name}`)
})
app.listen(8080, () => {
console.log('Server started')
})Client side (Using Socket.io client library)
const socket = io('http://localhost:8080')
socket.emit('greeting', { name: 'John Doe' })
socket.on('greeting', (data) => {
console.log(data) //Hello John Doe!
})The connect and disconnect events
The connect event is called when a socket client is connected
app.on('connect', (ctx) => {
...
})The disconnect event is called when a socket client is disconnected
app.on('disconnect', (ctx) => { //ctx.body is the reason for disconnecting
...
})Using middlewares
You can create middlewares creating events with the same path and calling the next() method to call the next middleware.
app.on('greeting', (ctx) => {
console.log('I am a middleware')
ctx.next() //call next middleware
})
app.on('greeting', (ctx) => {
ctx.socket.emit('greeting', `Hello ${ctx.body.name}`)
})Or loading a series of middleware functions at a mount point, with a mount path.
app.on('greeting', (ctx) => {
console.log('I am a middleware')
ctx.next() //call next middleware
}, (ctx) => {
ctx.socket.emit('greeting', `Hello ${ctx.body.name}`)
})Unsing routers
A router object is an isolated instance of middleware and routes. You can think of it as a “mini-application,” capable only of performing middleware and routing functions. Every Express application has a built-in app router.
index.js
const { App } = require('io-service')
const users = require('./users.js')
const app = new App()
app.on('users', users)users.js
const { Router } = require('io-service')
const router = new Router()
router.on('create', (ctx) => {
...
})
router.on('update', (ctx) => {
...
})
router.on('delete', (ctx) => {
...
})
router.on('list', (ctx) => {
...
})
module.exports = routerClient side
socket.emit('users/create', ...)
socket.emit('users/update', ...)
socket.emit('users/delete', ...)
socket.emit('users/list', ...)Serving static files
const app = new App({
static: 'path/to/static/files'
})Serving over HTTPS
const app = new App({
httpsOptions: {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.cert')
}
})The ctx object
- socket: The connected socket
- path: The request path
- body: The request body
- packet: The request packet
- next(): Function to call the next middleware
