Skip to content

Commit ee68895

Browse files
[WIKI-682] feat: hocuspocus v3 server migration (#7880)
* fix: hocuspocus v3 * fix: publishing messages across redis extension
1 parent e110ef5 commit ee68895

5 files changed

Lines changed: 139 additions & 166 deletions

File tree

apps/live/package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
"author": "",
2222
"dependencies": {
2323
"@dotenvx/dotenvx": "^1.49.0",
24-
"@hocuspocus/extension-database": "^2.15.0",
25-
"@hocuspocus/extension-logger": "^2.15.0",
26-
"@hocuspocus/extension-redis": "^2.15.0",
27-
"@hocuspocus/server": "^2.15.0",
24+
"@hocuspocus/extension-database": "^3.0.0",
25+
"@hocuspocus/extension-logger": "^3.0.0",
26+
"@hocuspocus/extension-redis": "^3.0.0",
27+
"@hocuspocus/server": "^3.0.0",
2828
"@plane/decorators": "workspace:*",
2929
"@plane/editor": "workspace:*",
3030
"@plane/logger": "workspace:*",

apps/live/src/extensions/redis.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,11 @@ export class Redis extends HocuspocusRedis {
2020
const stringPayload = typeof payload === "string" ? payload : JSON.stringify(payload);
2121
const message = new OutgoingMessage(documentName).writeBroadcastStateless(stringPayload);
2222

23-
const emptyPrefix = Buffer.concat([Buffer.from([0])]);
24-
25-
return this.pub.publishBuffer(
23+
return this.pub.publish(
2624
// we're accessing the private method of the hocuspocus redis extension
2725
this["pubKey"](documentName),
28-
Buffer.concat([emptyPrefix, Buffer.from(message.toUint8Array())])
26+
// we're accessing the private method of the hocuspocus redis extension to encode the message
27+
this["encodeMessage"](message.toUint8Array())
2928
);
3029
}
3130
}

apps/live/src/hocuspocus.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { Server, Hocuspocus } from "@hocuspocus/server";
1+
import { Hocuspocus } from "@hocuspocus/server";
22
import { v4 as uuidv4 } from "uuid";
33
// env
44
import { env } from "@/env";
@@ -36,7 +36,7 @@ export class HocusPocusServerManager {
3636
return this.server;
3737
}
3838

39-
this.server = Server.configure({
39+
this.server = new Hocuspocus({
4040
name: this.serverName,
4141
onAuthenticate,
4242
onStateless,

apps/live/src/server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -99,8 +99,8 @@ export class Server {
9999

100100
public async destroy() {
101101
if (this.hocuspocusServer) {
102-
await this.hocuspocusServer.destroy();
103-
logger.info("HocusPocus server closed gracefully.");
102+
this.hocuspocusServer.closeConnections();
103+
logger.info("HocusPocus connections closed gracefully.");
104104
}
105105

106106
await redisManager.disconnect();

0 commit comments

Comments
 (0)