Package Exports
- strapio
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (strapio) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
StrapIO
module for working with socket.io with predefined rules. StrapIO will look at Role permission on each action. StrapIO is looking for all roles which have access to the given contenttype and action type.
Installation
npm i strapio
config/functions/bootstrap.js
process.nextTick(() => {
strapi.StrapIO = new (require("strapio"))(strapi);
});
Usage
server
api/<content-type>/controllers/<content-type>.js
module.exports = {
async create(ctx) {
let entity;
if (ctx.is("multipart")) {
const { data, files } = parseMultipartData(ctx);
entity = await strapi.services.CONTENTTYPE.create(data, { files });
} else {
entity = await strapi.services.CONTENTTYPE.create(ctx.request.body);
}
strapi.StrapIO.emit(this,'create', entity);
return sanitizeEntity(entity, { model: strapi.models.CONTENTTYPE });
},
async update(ctx) {
const { id } = ctx.params;
let entity;
if (ctx.is("multipart")) {
const { data, files } = parseMultipartData(ctx);
entity = await strapi.services.CONTENTTYPE.update({ id }, data, {
files,
});
} else {
entity = await strapi.services.CONTENTTYPE.update({ id }, ctx.request.body);
}
strapi.StrapIO.emit(this,'update', entity);
return sanitizeEntity(entity, { model: strapi.models.CONTENTTYPE });
}
}
Client
const io = require("socket.io-client");
// Handshake required, token will be verified against strapi
const socket = io.connect(API_URL, {
query: { token },
});
socket.on("create", (data) => {
//do something
});
socket.on("update", (data) => {
// do something
});
Test
Currently tested with:
{
"strapi": "3.1.6",
"strapi-plugin-users-permissions": "3.1.6"
}
Middleware ...coming
Im working on an middleware wrapper. Im not sure how. :)
Contribute
just do it over github or chat with me @Discord