【问题标题】:Express: How to keep passing data from controller to the view continuouslyExpress:如何不断地将数据从控制器传递到视图
【发布时间】:2016-04-02 13:45:37
【问题描述】:

我正在从我的站点连接到现有的 irc 服务器。我有几个监听器不断将数据记录到控制台。我的问题是如何将这些数据传递给 ejs 文件,而无需一次又一次地渲染文件。

irc.addListener('kick', function (channel, who, by, reason) {
                console.log('%s was kicked from %s by %s: %s', who, channel, by, reason);
            });

这是不断将数据记录到控制台的代码。每当有事件发生时,我都需要将变量发送到视图

【问题讨论】:

    标签: node.js express ejs irc


    【解决方案1】:

    最直接的方法是使用 websockets。看看 socket.io,他们有很多例子,包括聊天客户端。

    /*编辑添加*/ 我强烈建议您自己完成一些 Socket.io 教程,以便您对正在发生的事情和原因有一个很好的理解。

    也就是说,为了让您开始,以下代码应该是一个非常基本的起点:

    var io = require('socket.io')(80); // or whatever port you're using
    var irc = require('./path/to/your/irc/client.js');
    var format = require('util').format;
    
    // not sure why yours uses 'addListener' syntax, but if you control it, I'd favor node semantics
    irc.on('kick', function(channel, who, by, reason){
      io.emit('message', format('<%s> %s', from, message));
    });
    

    您使用 socket.io 代码侦听连接等的附加代码对于您描述的需求并非绝对必要,但如果您希望客户端能够使用套接字发送,则可以添加东西到服务器。

    【讨论】:

    • bot.addListener('message', function (from, message) { console.log(' %s', from, message); /* console.log("输入的函数"); console.log("函数退出");*/ }); io.on('连接', function(socket){ socket.on('聊天消息', function(){ io.emit('聊天消息', message); }); });我应该如何结合这两个函数,我需要将消息变量传递给 io.on 函数?
    【解决方案2】:

    有两种方式:

    JSON: 创建一个 JSON 文件和一个字符串变量,然后将每个 irc 操作附加到字符串 (var += ircstring) 并创建一个始终将此字符串写入 JSON 文件的 Timer,然后使用 jQuery 和 DOM 更新网站上的内容(document.getElementById(...).innerHTML = json 输出) 这是一种方式,但我认为这种方式对资源不友好。

    更好的方法是:socket.io 这是一个 npm 模块,可让您与客户端持续交互。 Node.js 应用程序的交互就像一个 Socket 服务器,而 Web 浏览器(或多个 Web 浏览器)就像一个客户端 Socket。 看看他们的网站,他们有一个很好的使用 socket.io 和 express 构建聊天的教程!

    【讨论】:

    • bot.addListener('message', function (from, message) { console.log(' %s', from, message); /* console.log("输入的函数"); console.log("函数退出");*/ }); io.on('连接', function(socket){ socket.on('聊天消息', function(){ io.emit('聊天消息', message); }); });我应该如何结合这两个函数,我需要将消息变量传递给 io.on 函数?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多