Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Express:如何保持数据从控制器持续传递到视图_Node.js_Express_Ejs_Irc - Fatal编程技术网

Node.js Express:如何保持数据从控制器持续传递到视图

Node.js Express:如何保持数据从控制器持续传递到视图,node.js,express,ejs,irc,Node.js,Express,Ejs,Irc,我正在从我的站点连接到现有的irc服务器。我有几个监听器,它们不断地将数据记录到控制台。我的问题是如何将这些数据传递到ejs文件,而不必一次又一次地呈现该文件 irc.addListener('kick', function (channel, who, by, reason) { console.log('%s was kicked from %s by %s: %s', who, channel, by, reason); }); 这

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

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

这是保持将数据记录到控制台的代码。每当发生事件时,我都需要将变量发送到视图中。最简单的方法是使用WebSocket。看看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));
});
var io=require('socket.io')(80);//或者你正在使用的任何端口
var irc=require('./path/to/your/irc/client.js');
var format=require('util')。格式;
//不确定为什么您的使用“addListener”语法,但如果您控制它,我会倾向于使用节点语义
irc.on(‘踢’,功能)(频道、谁、原因){
io.emit('message',格式('%s',from,message));
});
对于您所描述的您的需求,socket.io代码侦听连接等的附加代码不是严格必需的,但是如果您希望客户端能够使用socket将内容发送到服务器,则可以添加这些代码

有两种方法:

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

更好的方法是:socket.io 这是一个npm模块,允许您与客户机持续交互。Node.js应用程序的交互就像一个套接字服务器,而Webbrowser(或多个Webbrowser)的行为就像一个客户端套接字。 只要看看他们的网站,他们就有一个很好的教程,可以使用socket.io和express建立聊天室

bot.addListener('message',function(from,message){console.log('%s',from,message);/*console.log(“输入的函数”);console.log(“函数退出”);*/};io.on('connection',function(socket){socket.on('chat message',function(){io.emit('chat message',message);});如何组合这两个函数,我需要将消息变量传递给io.on函数?bot.addListener('message',function(from,message){console.log('%s',from,message);/*console.log(“entered function”);console.log(“function exited”);*/};io.on('connection',function(socket){socket.on('chat message',function(){io.emit('chat message',message);});我应该如何组合这两个函数,我需要将message变量传递给io.on函数?