Skip to content

Commit 9bd97e2

Browse files
committed
[Fix] Remove the delay of waiting on websocket to consider a message sent
1 parent d3511ea commit 9bd97e2

File tree

3 files changed

+27
-4
lines changed

3 files changed

+27
-4
lines changed

apps/meteor/app/lib/client/methods/sendMessage.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,15 @@ Meteor.methods<ServerMethods>({
4242
return;
4343
}
4444

45-
await onClientMessageReceived(message as IMessage).then((message) => {
45+
await onClientMessageReceived(message as IMessage).then(async (message) => {
4646
Messages.state.store(message);
47-
return clientCallbacks.run('afterSaveMessage', message, { room, user });
47+
await clientCallbacks.run('afterSaveMessage', message, { room, user });
48+
49+
// Now that the message is stored, we can go ahead and mark as sent
50+
Messages.state.update(
51+
(record) => record._id === message._id && record.temp === true,
52+
(record) => ({ ...record, temp: false }),
53+
);
4854
});
4955
},
5056
});

apps/meteor/app/ui-utils/client/lib/LegacyRoomManager.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,17 @@ const openRoom = (typeName: string, record: OpenedRoom) => {
177177
if (msg.t !== 'command') {
178178
const subscription = Subscriptions.state.find(({ rid }) => rid === record.rid);
179179
const isNew = !Messages.state.find((record) => record._id === msg._id && record.temp !== true);
180-
({ _id: msg._id, temp: { $ne: true } });
180+
181+
// Measure and log message receive delay for messages
182+
if (msg.ts) {
183+
const receiveDelay = Date.now() - new Date(msg.ts).getTime();
184+
185+
// Log warning if delay is significant (>2 seconds)
186+
if (receiveDelay > 2000) {
187+
console.warn(`[Message Delivery] High delay detected: ${receiveDelay}ms. Possible network or backend issue.`);
188+
}
189+
}
190+
181191
await upsertMessage({ msg, subscription });
182192
if (isNew) {
183193
await clientCallbacks.run('streamNewMessage', msg);

apps/meteor/client/stores/Messages.ts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,12 @@ import { createGlobalStore } from '../lib/cachedStores/createGlobalStore';
66
/** @deprecated prefer fetching data from the REST API, listening to changes via streamer events, and storing the state in a Tanstack Query */
77
export const Messages =
88
createGlobalStore(
9-
createDocumentMapStore<IMessage & { ignored?: boolean; autoTranslateFetching?: boolean; autoTranslateShowInverse?: boolean }>(),
9+
createDocumentMapStore<
10+
IMessage & {
11+
ignored?: boolean;
12+
autoTranslateFetching?: boolean;
13+
autoTranslateShowInverse?: boolean;
14+
temp?: boolean;
15+
}
16+
>(),
1017
);

0 commit comments

Comments
 (0)