delayedTelegrams
是MessageDispatcher
对象的一个属性,用于管理消息调度器中延迟发送的信息。
delayedTelegrams
被定义为一个数组,其中存储了与当前对象相关的延迟消息。该数组中的每一项都是一个JavaScript对象,包含了以下属性:
dispatchTime
:表示消息应该被分发的时间。这个属性的值是一个UNIX时间戳(即1970年1月1日以来经过的毫秒数)。sender
:表示发送消息的实体。receiver
:表示接收消息的实体。message
:表示要发送的消息。delayedTelegrams
对象提供了以下方法:
push()
方法用于向延迟消息队列中添加新的消息。
dispatchTime
:消息应被分发的时间。这个参数的值必须是一个UNIX时间戳。sender
:发送消息的实体。receiver
:接收消息的实体。message
:要发送的消息。pop()
方法从延迟消息队列中移除并返回最早的消息。
返回一个包含以下属性的JavaScript对象:
dispatchTime
:消息应该被分发的时间。sender
:消息的发送者。receiver
:消息的接收者。message
:要发送的消息。clear()
方法用于清除延迟消息队列中的所有消息。
该方法不返回任何值。
const dispatcher = new MessageDispatcher();
const entity1 = new Entity();
const entity2 = new Entity();
// 添加一条延迟消息
dispatcher.delayedTelegrams.push({
dispatchTime: Date.now() + 5000, // 5秒后发送
sender: entity1,
receiver: entity2,
message: "hello world"
});
// 处理延迟消息
setInterval(() => {
const now = Date.now();
while (dispatcher.delayedTelegrams.length > 0 && dispatcher.delayedTelegrams[0].dispatchTime <= now) {
const telegram = dispatcher.delayedTelegrams.pop();
dispatcher.dispatchMessage(telegram.sender, telegram.receiver, telegram.message);
}
}, 1000); // 每1秒处理一次延迟消息
以上例子展示了如何使用delayedTelegrams
属性在特定时间发送消息。在这个例子中,我们向delayedTelegrams
数组中添加了一条延迟5秒后发送的消息,并使用一个定时器来每1秒检查是否有延迟消息应该被发送,并调用dispatchMessage()
方法来分发消息。