我正在用NodeJS和Redis编写一个事件驱动的发布/订阅应用程序.我需要一个示例,说明当Redis中的数据值发生变化时如何通知Web客户端.
有没有人知道用Node.JS编写的ESB.似乎节点对此很有用.可能会注意到IBM DataPower的规模,我现在只需要以下功能:
我可以自己开始写一个,但我想知道是否可能有一个现有的项目要构建.
谢谢
我有一个node.js tcp服务器,用作iPhone聊天客户端的后端.由于我的实现包括私人群聊,我在内存中存储用户列表及其所属的聊天室,以便适当地路由消息.这一切都很好,假设我的聊天服务器总是在一台机器上,但是当我需要横向扩展时,我需要一种向连接到不同服务器的客户端广播消息的好方法.我不想开始在节点服务器之间进行进程间通信,而是希望与redis共享状态.
我有一些想法,但我想知道是否有人有一个很好的解决方案吗?这里要清楚的是一个例子:
用户1连接到房间X上的服务器1,用户2连接到房间X上的服务器2.用户1发送消息,我需要将其传递给用户2,但由于我使用内存数据结构,服务器不应该分享国家.我希望我的节点服务器尽可能保持愚蠢,这样我就可以添加/删除我的系统需求.
谢谢 :)
使用promises,实现队列以防止例如并行运行多个HTTP请求非常容易:
class Runner {
private promise;
constructor(http) {
this.promise = q.resolve();
}
getUrl() {
return this.promise = this.promise.then(() => http.get('http://someurl'))
}
}
var runner = new Runner(http);
var lastPromise;
for (var i = 0; i < 10; i++) {
lastPromise = runner.getUrl();
}
lastPromise.then(() => console.log("job's done!");
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚如何在Rxjs中做到这一点.如果我尝试类似于上面的内容,那么当我添加请求时,所有先前的HTTP调用都会重复,因为它只是添加到流中并重新运行整个事务.
我读了一些关于队列调度程序的东西,但这似乎不再存在(不再)了?