Tag: 事件

Socket io在重新连接时连接到多个套接字

我有一个应用程序,我使用Node js,socket io和redis实现了通知。 在那里,我已经成功地在节点js中configuration发布者和订阅者。 使用套接字我可以在客户端上显示消息,如实时。 我的devise是1个发布者发布到许多频道,每个用户只能听他自己的频道。 我发布到channel1和channel2,并且当用户只听他们的频道,他们只得到他们各自的消息一次。 直到现在,它工作得很好,顺利。 但在这里我的问题开始。 当互联网离线时,它试图重新连接,当它再次build立连接时,在每一次发布时,它开始订阅两次,并且由于这些信息显示两次。 我的代码是这样的服务器用户端 io.sockets.on('connection', function (socket) { var channelName = "channel"+socket.handshake.query.ch; console.log("======================================================================="); console.log("Connected to client – ["+socket.id+"] for ["+channelName+"]"); console.log("Transport Method – ["+io.transports[socket.id].name+"]"); console.log("======================================================================="); try{ var client = redis.createClient(); client.on("connect",function(){ client.subscribe(channelName)?console.log("channel subscribed to {"+channelName+"}"):console.log("Not Subscribed to {"+channelName+"}"); client.on("message", function(channel,message){ console.log("======================================================================="); console.log("Got message ["+message+"] in ["+channel+"]"); socket.emit("notification"+channel, { […]

EventEmitter的实现,可以让你得到听众的结果?

我意识到nodejs有一个强大的EventEmitter构造函数,它允许你发射事件。 但是,EventEmitter缺less的是事件发射器查看侦听器返回的内容的方法 。 这是我后面的function: e = new FantasticEventEmitter(); e.on( 'event1', function( param1, param2, cb ){ console.log("First listener called…") cb( null, 10 ); }); e.on( 'event1', function( param2, param2, cb ){ console.log("Ah, another listener called!"); cb( null, 20 ); }); e.emit( 'event1', 'firstParameter', 'secondParameter', function( err, res ){ console.log("Event emitted, now res will be [ 10, […]

事件发生后,分配事件处理程序可能已经发出

这是错的吗? var f = fs.createWriteStream('file'); otherStream.pipe(f); f.on('finish', function() { /*…*/ }) 不应该是这样的: var f = fs.createWriteStream('file'); f.on('finish', function() { /*…*/ }) otherStream.pipe(f); ? 哪一个更好,为什么?

本地eventEmitter正在侦听全局eventEmitter

我几乎将问题标题写成 – 在事件发送器之间进行通信 我有一个node.js模块(X)在全局范围(它使用eventEmitter)。 然后我有每个套接字本地代码(用户连接)。 现在我通过全局variablesG = {'X':X}来携带X,以便套接字可以像这样访问X: GXon('someEvent',doSomething); 这是愚蠢的! 现在,每次我开始我的服务器似乎行为正常(我收到事件),但如果我刷新页面,并发出一个事件,我得到它两次。 如果我再次刷新页面,我会得到事件3次。 我认为我将监听器绑定到全局相同的eventEmitter。 我如何使一个单独的本地eventListener侦听全局eventEmiter的发射? 我知道如何设置一个eventEmiter: var events = require('events'); var ee = new events.EventEmitter(); ee.on('someEvent',function(){console.log('hello');}); 但它并没有赶上另一个事件… 我也尝试使用eventEmitter复制模块 var ee = GX; ee.on('someEvent',function() { console.log('hello'); }); 但它仍然收到一个事件的倍数。 hello hello hello

事件本身就触发提示?

提示function运行时是否触发了事件? 我想注册该事件,当我的代码中有一个提示时做些事情。 不幸的是,我没有find任何文件:/ 谢谢

Fb – Flo错误EBUSY hyberfil.sys

我只是用Nodejs安装Fb Flo,将文档示例复制到一个文件中,像这样运行:node flo.js,我得到这个错误: events.js:72扔呃; //未处理“错误”事件 错误:EBUSY,lstat'C:hiberfil:sys' 我在post上看到,当节点试图写一个pipe理系统时发生错误,但是不知道为什么我得到了这个。 我以pipe理员身份运行terminal。 泰为你的帮助

Javascript错误事件使用meteor初学者文件

我正在构build一个使用Meteor启动器文件的应用程序,有时会得到我认为与Node.js有关的错误: 错误是:events.js:72扔呃; //未处理“错误”事件 错误:在Object.afterWrite(net.js:721:19)处的errnoException(net.js:905:11)处写入EOF 我想检查是否有人曾经遇到过,如果你有和如何解决它的build议? 任何援助将不胜感激。 谢谢。

Nodejsasynchronous事件导致错误的顺序

比方说,我有一个函数内的以下function: function (arr){ newArray = []; arr.forEach(function(prop){ //extract data from arr into newArray with newArray.push(), //this is done through fs and ffmpeg events } console.log(newArray); //empty, because of async problems //I want to proceed with my code here } 现在你可以看到,我从一个旧数组中提取数据到一个新数组中,每个newArray.push都是通过一个包含fs和FFmpeg等包的事件完成的,只有当你没有任何东西时才会运行问题是,由于JS内核同步运行,console.log(newArray); 是空的,我看不到所有的新值。 我只是想继续我的代码后为每个事件完成,而不是之前。 那么,我该如何解决这个问题呢? asynchronous包可能会有所帮助?

在特定情况下完全销毁对象和空闲内存(node.js)

我正在写一个程序,可以加载一些用户模块。 我的主程序有一个在程序和用户模块之间共享的对象列表。 现在交易是可以从列表中删除/添加这些对象。 他们是dynamic的。 在我自己的程序中,我可以确保对已删除项目的所有引用都设置为空,并清除所有侦听器。 (是否正确的方式来允许垃圾回收器处理的方式?)。 问题是,用户模块可以做任何他们想要的与被删除的对象。 他们可以添加列表器,参考它等等。在这种情况下,我怎样才能释放内存? 经过很长一段时间我的程序运行和许多添加/删除这些对象,我可能导致内存泄漏… 感谢进步。

为什么要破坏stream?

我看到一些在可写stream中pipe道可读stream的模块,如果发生错误,他们使用destroy方法: const readable = fs.createReadStream("file"); const writable = fs.createWriteStream("file2"); readable.pipe(writable); readable.on("error", (error) => { readable.destroy(); writable.destroy(); writable.removeListener("close"); callback(error); }); writable.on("error", (error) => { readable.destroy(); writable.destroy(); writable.removeListener("close"); callback(error); }); 什么是摧毁stream和消除可写入streamclosures事件的必要性? 如果我不这样做,会发生什么? 谢谢。