我正在使用流在两个应用程序之间发送通知。应用程序通过Redis通过集群进行通信。每当我将某些通知从一个应用程序推送到另一个应用程序时,它都将不起作用。但是,当我刷新浏览器并尝试时,它可以工作。
你能告诉我是什么问题。我的代码如下:
应用程式1程式码
function sendMessage(message,date,toUserId,fromUserId,jobId){
ChatStream.emit(toUserId,message,date,toUserId,fromUserId,jobId);
}
ChatStream.on(Meteor.userId(),function(message,date,toUserId,fromUserId,jobId){
var formatDate = moment(date).fromNow();
var index = ClientChat.find().count();
var chatObj = {
from:fromUserId,
message:message,
date:formatDate,
jobId:jobId,
index:index
}
//ClientChat.insert({from:fromUserId,message:message,date:formatDate,jobId:jobId,index:index})
ClientChat.insert(chatObj);
Session.set('receivedPing',chatObj);
})
应用2
function sendMessage(message,date,toUserId,fromUserId,jobId){
ChatStream.emit(toUserId,message,date,toUserId,fromUserId,jobId);
}
ChatStream.on(Meteor.userId(),function(message,date,toUserId,fromUserId,jobId){
ClientChat.insert({from:fromUserId,message:message,date:date,jobId:jobId})
})
服务器文件夹中的Cluster.js
Meteor.startup(function(){
Meteor.Cluster.init();
Meteor.Cluster.sync(ChatStream,LocalNotificationStream);
})
lib文件夹
ChatStream = new Meteor.Stream('chatStream');
我使用的软件包是arunoda流
http://arunoda.github.io/meteor-streams/
最佳答案
我找到了解决方案。这是因为代码
ChatStream.on(Meteor.userId(),function(message,date,toUserId,fromUserId,jobId){
ClientChat.insert({from:fromUserId,message:message,date:date,jobId:jobId})
})
在应用程序刚刚启动且用户尚未登录时正在运行。因此,我确保仅在通过此操作登录后才运行此代码
Deps.autorun(function(){
if(Meteor.userId()){
ChatStream.on(Meteor.userId(),function(message,date,toUserId,fromUserId,jobId){
ClientChat.insert({from:fromUserId,message:message,date:date,jobId:jobId})
})
}
})
}
});