Changes to socket.io code
This commit is contained in:
11574
package-lock.json
generated
11574
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -4,12 +4,11 @@ import path from "path";
|
||||
import { Service, ServiceBroker, Context } from "moleculer";
|
||||
import ApiGateway from "moleculer-web";
|
||||
import { getCovers, extractArchive } from "../utils/uncompression.utils";
|
||||
import { map } from "lodash";
|
||||
import { map, flatten } from "lodash";
|
||||
import JSONStream from "JSONStream";
|
||||
const IO = require("socket.io")();
|
||||
|
||||
export default class ApiService extends Service {
|
||||
|
||||
public constructor(broker: ServiceBroker) {
|
||||
super(broker);
|
||||
// @ts-ignore
|
||||
@@ -20,65 +19,78 @@ export default class ApiService extends Service {
|
||||
settings: {
|
||||
port: process.env.PORT || 3000,
|
||||
|
||||
routes: [{
|
||||
path: "/api",
|
||||
whitelist: [
|
||||
// Access to any actions in all services under "/api" URL
|
||||
"**",
|
||||
],
|
||||
use: [],
|
||||
mergeParams: true,
|
||||
autoAliases: true,
|
||||
routes: [
|
||||
{
|
||||
path: "/api",
|
||||
whitelist: [
|
||||
// Access to any actions in all services under "/api" URL
|
||||
"**",
|
||||
],
|
||||
use: [],
|
||||
mergeParams: true,
|
||||
autoAliases: true,
|
||||
|
||||
aliases: {},
|
||||
/**
|
||||
* Before call hook. You can check the request.
|
||||
* @param {Context} ctx
|
||||
* @param {Object} route
|
||||
* @param {IncomingMessage} req
|
||||
* @param {ServerResponse} res
|
||||
* @param {Object} data
|
||||
onBeforeCall(ctx: Context<any,{userAgent: string}>,
|
||||
route: object, req: IncomingMessage, res: ServerResponse) {
|
||||
Set request headers to context meta
|
||||
ctx.meta.userAgent = req.headers["user-agent"];
|
||||
},
|
||||
*/
|
||||
|
||||
/**
|
||||
* After call hook. You can modify the data.
|
||||
* @param {Context} ctx
|
||||
* @param {Object} route
|
||||
* @param {IncomingMessage} req
|
||||
* @param {ServerResponse} res
|
||||
* @param {Object} data
|
||||
*
|
||||
onAfterCall(ctx: Context, route: object, req: IncomingMessage, res: ServerResponse, data: object) {
|
||||
// Async function which return with Promise
|
||||
return doSomething(ctx, res, data);
|
||||
},
|
||||
*/
|
||||
|
||||
// Calling options. More info: https://moleculer.services/docs/0.14/moleculer-web.html#Calling-options
|
||||
callingOptions: {},
|
||||
|
||||
bodyParsers: {
|
||||
json: {
|
||||
strict: false,
|
||||
limit: "1MB",
|
||||
aliases: {
|
||||
async "POST getComicCovers"(req, res) {
|
||||
console.log(req.body);
|
||||
try {
|
||||
const { extractionOptions, walkedFolders } =
|
||||
req.body;
|
||||
switch (extractionOptions.extractionMode) {
|
||||
case "bulk":
|
||||
const extractedDataPromises = map(
|
||||
walkedFolders,
|
||||
async (folder) =>
|
||||
await extractArchive(
|
||||
extractionOptions,
|
||||
folder
|
||||
)
|
||||
);
|
||||
return Promise.all(
|
||||
extractedDataPromises
|
||||
).then((data) => flatten(data));
|
||||
case "single":
|
||||
return await extractArchive(
|
||||
extractionOptions,
|
||||
walkedFolders[0]
|
||||
);
|
||||
default:
|
||||
console.log(
|
||||
"Unknown extraction mode selected."
|
||||
);
|
||||
return {
|
||||
message:
|
||||
"Unknown extraction mode selected.",
|
||||
errorCode: "90",
|
||||
data: `${extractionOptions}`,
|
||||
};
|
||||
}
|
||||
res.end();
|
||||
} catch (error) {}
|
||||
},
|
||||
},
|
||||
urlencoded: {
|
||||
extended: true,
|
||||
limit: "1MB",
|
||||
|
||||
// Calling options. More info: https://moleculer.services/docs/0.14/moleculer-web.html#Calling-options
|
||||
callingOptions: {},
|
||||
|
||||
bodyParsers: {
|
||||
json: {
|
||||
strict: false,
|
||||
limit: "1MB",
|
||||
},
|
||||
urlencoded: {
|
||||
extended: true,
|
||||
limit: "1MB",
|
||||
},
|
||||
},
|
||||
|
||||
// Mapping policy setting. More info: https://moleculer.services/docs/0.14/moleculer-web.html#Mapping-policy
|
||||
mappingPolicy: "all", // Available values: "all", "restrict"
|
||||
|
||||
// Enable/disable logging
|
||||
logging: true,
|
||||
},
|
||||
|
||||
// Mapping policy setting. More info: https://moleculer.services/docs/0.14/moleculer-web.html#Mapping-policy
|
||||
mappingPolicy: "all", // Available values: "all", "restrict"
|
||||
|
||||
// Enable/disable logging
|
||||
logging: true,
|
||||
}],
|
||||
],
|
||||
// Do not log client side errors (does not log an error response when the error.code is 400<=X<500)
|
||||
log4XXResponses: false,
|
||||
// Logging the request parameters. Set to any log level to enable it. E.g. "info"
|
||||
@@ -93,23 +105,46 @@ export default class ApiService extends Service {
|
||||
},
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
|
||||
},
|
||||
methods: {},
|
||||
events: {
|
||||
"**"(payload, sender, event) {
|
||||
if (this.io)
|
||||
this.io.emit("event", {
|
||||
sender,
|
||||
event,
|
||||
payload
|
||||
});
|
||||
}
|
||||
"**"(payload, sender, event) {
|
||||
if (this.io)
|
||||
this.io.emit("event", {
|
||||
sender,
|
||||
event,
|
||||
payload,
|
||||
});
|
||||
},
|
||||
},
|
||||
started(): any {
|
||||
// Create a Socket.IO instance, passing it our server
|
||||
this.io = IO.listen(this.server);
|
||||
|
||||
// Add a connect listener
|
||||
this.io.on("connection", (client) => {
|
||||
this.logger.info("Client connected via websocket!");
|
||||
|
||||
client.on("call", ({ action, params, opts }, done) => {
|
||||
this.logger.info(
|
||||
"Received request from client! Action:",
|
||||
action,
|
||||
", Params:",
|
||||
params
|
||||
);
|
||||
|
||||
this.broker
|
||||
.call(action, params, opts)
|
||||
.then((res) => {
|
||||
if (done) done(res);
|
||||
})
|
||||
.catch((err) => this.logger.error(err));
|
||||
});
|
||||
|
||||
client.on("disconnect", () => {
|
||||
this.logger.info("Client disconnected");
|
||||
});
|
||||
});
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import through2 from "through2";
|
||||
import oboe from "oboe";
|
||||
import H from "highland";
|
||||
import { stringify } from "highland-json";
|
||||
const IO = require("socket.io")();
|
||||
|
||||
export default class ProductsService extends Service {
|
||||
// @ts-ignore
|
||||
@@ -54,32 +55,6 @@ export default class ProductsService extends Service {
|
||||
},
|
||||
},
|
||||
methods: {},
|
||||
started(): any {
|
||||
// Create a Socket.IO instance, passing it our server
|
||||
this.io = IO.listen(this.server);
|
||||
|
||||
// Add a connect listener
|
||||
this.io.on("connection", client => {
|
||||
this.logger.info("Client connected via websocket!");
|
||||
|
||||
client.on("call", ({ action, params, opts }, done) => {
|
||||
this.logger.info("Received request from client! Action:", action, ", Params:", params);
|
||||
|
||||
this.broker.call(action, params, opts)
|
||||
.then(res => {
|
||||
if (done)
|
||||
done(res);
|
||||
})
|
||||
.catch(err => this.logger.error(err));
|
||||
});
|
||||
|
||||
client.on("disconnect", () => {
|
||||
this.logger.info("Client disconnected");
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
},
|
||||
schema
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user