🔧 Emitting confirmation events back to the client

This commit is contained in:
2021-12-06 08:43:06 -08:00
parent ecd5d155fc
commit 32ad866c72
2 changed files with 29 additions and 25 deletions

View File

@@ -8,6 +8,7 @@ import { createServer } from "http";
import { Server, Socket } from "socket.io";
import { SocketIOMixin } from "../mixins/socket.io.mixin";
const SOCKET_HOST = process.env.DOCKER_HOST || `localhost`;
export const io = SocketIOMixin();
export default class ApiService extends Service {
public constructor(broker: ServiceBroker) {
super(broker);
@@ -81,8 +82,8 @@ export default class ApiService extends Service {
},
events: {
"**"(payload, sender, event) {
if (this.io)
this.io.emit("event", {
if (io)
io.emit("event", {
sender,
event,
payload,
@@ -92,10 +93,9 @@ export default class ApiService extends Service {
methods: {},
started(): any {
// Socket gateway-ish
this.io = SocketIOMixin();
// Add a connect listener
this.io.on("connection", (client) => {
io.on("connection", (client) => {
console.log("Client connected via websocket!");
client.on("action", async (action) => {

View File

@@ -11,6 +11,7 @@ import { SandboxedJob } from "moleculer-bull";
import { DbMixin } from "../mixins/db.mixin";
import Comic from "../models/comic.model";
import { extractCoverFromFile2 } from "../utils/uncompression.utils";
import { io } from "./api.service";
const REDIS_URI = process.env.REDIS_URI || `redis://0.0.0.0:6379`;
export default class LibraryQueueService extends Service {
@@ -55,7 +56,6 @@ export default class LibraryQueueService extends Service {
},
{}
);
return Promise.resolve({
dbImportResult,
@@ -66,7 +66,6 @@ export default class LibraryQueueService extends Service {
},
},
actions: {
enqueue: {
rest: "POST /enqueue",
params: {},
@@ -83,27 +82,32 @@ export default class LibraryQueueService extends Service {
},
methods: {},
async started(): Promise<any> {
const failed = await this.getQueue("process.import").on(
"failed",
async (job, error) => {
io.on("connection", async (client) => {
await this.getQueue(
"process.import"
).on("failed", async (job, error) => {
console.error(
`An error occured in 'process.import' queue on job id '${job.id}': ${error.message}`
);
}
);
const completed = await this.getQueue(
"process.import"
).on("completed", async (job, res) => {
console.info(
`Job with the id '${job.id}' completed.`
);
});
const stalled = await this.getQueue(
"process.import"
).on("stalled", async (job) => {
console.warn(
`The job with the id '${job} got stalled!`
);
});
await this.getQueue(
"process.import"
).on("completed", async (job, res) => {
client.emit("action", {
type: "LS_COVER_EXTRACTED",
result: res,
});
console.info(
`Job with the id '${job.id}' completed.`
);
});
await this.getQueue(
"process.import"
).on("stalled", async (job) => {
console.warn(
`The job with the id '${job} got stalled!`
);
});
});
},
},