Tag: publish subscribe

如何在节点应用程序中实时提供给所有跟随者

我正在开发node.js和MongoDB中的社交networkingtypes的应用程序。 我想添加一个function,如 – 如果用户A已经跟随用户B,那么当用户B发布的东西,它应该自动来到他的墙上的用户A! 方法1 – 这是我研究到现在创build一个用户B的频道,所有其他用户订阅该频道,当用户B张贴的东西,然后发射与所有用户socket.io。 所以对于这种方法,我们正在考虑在每次新用户注册时创build一个频道。 但问题是 – 这是可行的方法,我怎么知道哪个通道是哪个用户或者是否有方法在MongoDB中存储通道。 如果我创build了太多频道,会导致我的服务器崩溃? 方法2 – 我得到的另一个方法是 在数据库中查找源用户的追随者。 并使用socket.io发送饲料给所有的追随者如何扩大这个,如果我有100个追随者的每个用户,当每次用户发布,将search在数据库中创build一个开销。 使用Rediscaching会更好地存储追随者? 而不是检查追随者 – 从Redis中find并使用socket.io发出消息 方法3 – 我听说Redis pub / sub的名字,但无法find它在我的应用程序中的工作原理。 请build议一些创build这样的最好的标准! 如果上面的方法是好的,你可以请build议我的stream程或如何创build一个代码! 如果你给我一个例子,我会很棒。

用PubnubreplaceSocket io(WebRTC)

我正在研究使用Pubnub的服务来build立video对等体之间的WebRTC连接。 有了这个,我希望避免使用套接字io这是我目前使用的,虽然我只是找不到任何示范,演示如何做到这一点。 套接字io正在处理从客户端和服务器发出的事件。 据我所知,当前节点的js服务器将不再需要处理任何发射的事件,因为socket io不会被使用,但这是我遇到的问题。 我不知道如何设置客户端互相发送他们需要的信息(谁连接到等) 有没有简单的例子或实现的pubnub被用来代替socket io的一个项目,或者有人可以揭示一些我可能没有看到的东西,谢谢! 编辑:也与任何在Pubnub经验的人,是我正在尝试甚至可能哈哈

使用redis作为pub-sub时不需要的多个消息

下面的代码工作的很好,当我做pub / sub使用socket.io。 基本上,我从浏览器发送聊天消息。 在服务器上,我收听这条消息,并把它发回给服务器,同样的消息。 所以,我希望每发送一条消息,都会返回/打印1条消息。 在下面,我可以从多个浏览器login,当我发送一条聊天消息时,它将按照预期返回/打印为单个聊天消息。 io.use(socketHandshake({store: sessionStore, key:'jsessionid', secret:'secret', parser:cookieParser()})); io.on('connection', function (socket) { socket.on('chat', function (message) { io.emit('chat', "hello world"); }); }); 但是,当我尝试使用redis做pub / sub时,出现了一个问题。 从第一个浏览器:1个聊天消息导致打印出1个聊天消息 从第二个浏览器:1个聊天消息导致打印出2个聊天消息 从第三个浏览器:1个聊天消息导致打印出3个聊天消息 var sub = redis.createClient(); var pub = redis.createClient(); sub.subscribe('chat'); io.use(socketHandshake({store: sessionStore, key:'jsessionid', secret:'secret', parser:cookieParser()})); io.on('connection', function (socket) { socket.on('chat', function (message) { // io.emit('chat', […]

Nodejs:如何处理对象之间的事件监听?

我目前有问题,我有一个对象,应该听另一个对象。 问题是:我应该如何处理订阅? 目前,我只知道两种可能的方式: 与注册人: var Registrator = function() { this.listener = new Listener(); }; Registrator.prototype.register = function(subsriber) { var self = this; subscriber.on('event', function(info) { self.listener.doSomething(info); }); }; 在构造函数中: var Subscriber = function() { var listener = require('./instanced-listener'); this.on('event', function(info) { listener.doSomething(info); }); }; 正如你所看到的,两种方法都不是那么简洁。 还有另外一种模式可以用来解决这个问题吗? 问候 PS: 如果这个例子看起来太抽象了,这里是来源: https://github.com/bodokaiser/documents/blob/master/lib/repository.js 检查构造函数,看看我的不快:)