@xaamin/adonis-ws
v1.0.1
Published
Adonisjs websockets support
Downloads
3
Maintainers
Readme
Install
npm i --save adonis-websocket
Setting up the provider
All providers are registered inside start/app.js
file.
const providers = [
'adonis-websocket/providers/WsProvider'
]
Setting up the alias
Aliases makes it easier to reference a namespace with a short unique name. Aliases are also registered inside start/app.js
file.
const aliases = {
Ws: 'Adonis/Addons/Ws'
}
Setup process is done. Let's use the Ws provider now.
Create file socket.js
and ws.js
- In folder
start
create filesocket.js
andws.js
touch start/socket.js
touch start/ws.js
socket.js
register chanelws.js
kennel of websocket, i be can config middleware in here
Chanel Base
- Create Channel base listen connection to path of websocket, in file
socket.js
const Ws = use('Ws')
// Ws.channel('/chat', function (contextWs) {
Ws.channel('/chat', function ({ socket }) {
// here you go
})
Add Middleware
- Config in file
ws
name and global
Middlleware global
const Ws = use('Ws')
const globalMiddlewareWs = [
'Adonis/Middleware/AuthInitWs'
]
const namedMiddlewareWs = {
auth: 'Adonis/Middleware/AuthWs'
}
Ws.global(globalMiddlewareWs)
Ws.named(namedMiddlewareWs)
Middleware Channel
- we have two middleware default is
Adonis/Middleware/AuthInitWs
andAdonis/Middleware/AuthWs
using authentication is compatible withAdonis Auth
Ws.channel('/chat', function ({ socket }) {
// here you go
}).middleware(<name middleware | function>)
- middleware function
Ws.channel('/chat', function ({ socket }) {
// here you go
}).middleware(async fuction(context, next) {
....
await next();
})
Create ControllerWs
Create controller websocket is a Chanel
adonis make:controller <Name>
and select
> For Websocket channel
Struct Controller Ws
- You can see controller in folder
app\Controllers\Ws
'use strict'
class LocationController {
// constructor (ContextWs) {
constructor ({ socket, request }) {
console.log('constructor');
this.socket = socket
this.request = request
}
// listion event `ready`
onReady () {
console.log('ready');
this.socket.toMe().emit('my:id', this.socket.socket.id)
}
joinRoom(ContextWs, payload) {
}
leaveRoom(ContextWs, payload) {
}
}
module.exports = LocationController
Structs ContextWs
- Structs object ContextWs
Attribute socket
auth
is Object AddonisSocket
AddonisSocket
- attribute
io
of socket.io - attribute
socket
of socket.io when client connect to Chanel - method
id
isid
of socket - method
rooms
get list room - method
on
issocket.on
- method
to
get socket ofid
connect - method
join
andleave
is room - method
disconnect
disconnect chanel
Attribute auth
auth
isAdonis Auth
Attribute request
request
isAdonis request
You can find a complete guide to be followed strictly before submitting your pull requests in the Official Documentation.