Meteor 中的简单聊天程序。当新消息进来时,我如何连接一个回调来触发?

Simple chat program in Meteor. How do I hook up a callback to fire when new messages come in?

我正在开发这个简单的聊天应用程序来学习 Meteor,我有点卡在这里。我有一个运行良好的聊天室,但我无法连接一个函数以在另一个人进行聊天时触发。我想自动滚动到 window 的底部并在发生这种情况时更新网站图标通知。我有一个模板 chatWindow,看起来像这样:

<template name="chatWindow">
    <div class="textWindow">
        {{#each messages}}
            <span class="username {{#if me}}me{{/if}}">{{username}}</span><span class="message">{{message}}</span>
            <br />
        {{/each}}
    </div>
    <br />
    <form>
        {{#if currentUser}}
            <input type="text" name="chatTextBox" id="chatTextBox" />
        {{/if}}
    </form>
</template>

{{#each messages}} 块非常适合自动抓取更新的聊天消息集合,但如何在更新时触发事件?我试过 Template.chatWindow.onRender()Template.chatWindow.rendered 但它们都只在第一次触发。

观察通常是前往此处的方式。假设 messages 存储在集合 Messages 中,您可以执行以下操作:

Messages.find().observe({
  added: function (document) {
    // Set some Session vars or do some jquery or update other collections
  }
});

Observe 在客户端和服务器端都可以工作,也可以为 document changed 事件和 document removed 事件注册回调。