快递:如何不断地将数据从控制器传递到视图

我正在从我的网站连接到现有的irc服务器。 我有几个监听器将数据logging到控制台。 我的问题是如何将这些数据传递给ejs文件,而不必反复渲染文件。

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

这是将数据logging到控制台的代码。 每当有事件时,我都需要将variables发送到视图

最简单的方法就是使用websocket。 看看socket.io,他们有很多例子,包括聊天客户端。

/ *编辑添加* /我强烈build议你自己做几个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代码监听连接等的附加代码对于你所描述的需求来说并不是必须的,但是如果你希望客户端能够使用套接字把东西发送给服务器。

有两种方法:

JSON:创build一个JSON文件和一个stringvariables,然后将每个irc动作追加到string(var + = ircstring),并创build一个Timer,该string总是写入JSON文件,然后使用jQuery和DOM来更新网站(document.getElementById(…)。innerHTML = json output)这是一种方式,但我不认为这种方式是资源友好的。

更好的方法是: socket.io这是一个npm模块,可以让你连续地与客户端进行交互。 Node.js应用程序与Socket服务器交互,Web浏览器(或多个Web浏览器)的行为就像一个客户端套接字。 只要看看他们的网站,他们有一个很好的教程,build立一个与socket.io聊天和expression!