Express:如何持续将数据从控制器传递到视图

时间:2016-04-02 13:45:38

标签: node.js express ejs irc

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

tiles

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

2 个答案:

答案 0 :(得分: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代码监听连接等的附加代码对于您描述的需求并不是绝对必要的,但如果您希望客户端能够使用套接字发送,则可以添加东西到服务器。

答案 1 :(得分:0)

有两种方法:

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

更好的方法是: socket.io 这是一个npm模块,可让您连续地与客户端进行交互。 Node.js应用程序就像Socket Server一样进行交互,Webbrowser(或多个Webbrowser)就像一个Client Socket。 看看他们的网站,他们有一个很好的教程,用于建立一个与socket.io和快递聊天!