gpt4 book ai didi

ruby-on-rails - Juggernaut 2 的服务器端计时器

转载 作者:搜寻专家 更新时间:2023-10-31 23:49:51 27 4
gpt4 key购买 nike

我正在使用 Juggernaut 2 编写一个用于实时推送通知的 Rails 应用程序,我不确定如何解决这个问题。我在聊天室中有许多用户,我想运行一个计时器,以便每 30 秒向聊天室中的每个浏览器推送一次。 Juggernaut 2 是基于 node.js 构建的,所以我假设我需要在那里编写这段代码。我只是不知道从哪里开始将其与 Juggernaut 2 集成。

最佳答案

我只是简单浏览了 Juggernaut,所以对我的回答持保留意见...

  1. 您可能对 Channel 对象感兴趣 (https://github.com/maccman/juggernaut/blob/master/lib/juggernaut/channel.js) 您会注意到 Channel.channel 是一个对象(想想 ruby​​ 的哈希)所有存在的 channel 。您可以设置一个 30 秒的循环计时器 (setInterval - http://nodejs.org/docs/v0.4.2/api/timers.html#setInterval) 来对您的所有 channel 进行操作。
  2. 每次循环迭代要做什么?那么,上述 channel 代码的链接有一个发布方法:

    publish: function(message){
    var channels = message.getChannels();
    delete message.channels;

    for(var i=0, len = channels.length; i < len; i++) {
    message.channel = channels[i];
    var clients = this.find(channels[i]).clients;

    for(var x=0, len2 = clients.length; x < len2; x++) {
    clients[x].write(message);
    }
    }

因此,您基本上必须创建一个 Message 对象,并将 message.channels 设置为 Channel.channels,如果您将该消息传递给 publish 方法,它将发送给您的所有客户端。

至于您消息的内容,我不知道您使用的是什么客户端(socket.io?有人已经用 Juggernaut 和 socket.io 为您构建的聊天客户端?)所以这取决于您。

至于将创建间隔和触发回调以将消息发布到所有 channel 的代码放在哪里,您可能需要在此处查看创建实际服务器监听给定端口的代码:(https://github.com/maccman/juggernaut/blob/master/lib/juggernaut/server.js)如果你在 init() 中附加间隔,那么一旦你启动服务器,它就会每 30 秒检查一次以发布你给定的消息到每个 channel

关于ruby-on-rails - Juggernaut 2 的服务器端计时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5227604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com