在流星中集成 node-whatsapi
Integration of node-whatsapi in meteor
我希望能够在 meteor 中查看 whatsapi。我正在使用
- 最新稳定流星
- node-whatsapi
- arunoda 的 meteorhacks:npm
并能掌握过去的基础知识:
在 meteor 服务器启动时,我有:
whatsapi = Meteor.npmRequire('whatsapi');
wa = whatsapi.createAdapter({
msisdn: '....',
username: '....',
password: '....',
ccode: '....'
});
wa.connect(function connected(err) {
if (err) {console.log(err); return;}
console.log('Connected');
wa.login(logged);
});
function logged(err) {
if (err) {console.log(err); return;}
console.log('Logged in');
wa.sendIsOnline();
};
... 这让我可以通过调用
的方法来发送和接收消息
wa.sendMessage(recipient, content, function(err, id) {
if (err) {console.log(err.message); return;}
console.log('Server received message %s', id);
});
下面的代码也可以工作,在控制台上记录收到的消息。这位于服务器 Meteor.startup:
内
wa.on('receivedMessage', function(message) {
console.log("From: " + message.from);
console.log(message.body);
});
我的问题是,当我尝试将商店 message.from 或 message.body 添加到集合中时,meteor 给我 "Meteor code must always run within a Fiber" 错误")
wa.on('receivedMessage', function(message) {
console.log("From: " + message.from);
console.log(message.body);
Recipients.insert({msgfrom: message.from});
});
求助!
使用 Meteor.bindEnvironment 包装 npm 模块发出的任何回调。它会将回调包装到 'Fiber' 中,因此您可以 运行 Meteor 代码在其中。
例如:
wa.on('receivedMessage', Meteor.bindEnvironment(function(message) {
console.log("From: " + message.from);
console.log(message.body);
Recipients.insert({msgfrom: message.from});
}));
它所做的基本上是将回调中的代码放入 Fiber。
我希望能够在 meteor 中查看 whatsapi。我正在使用
- 最新稳定流星
- node-whatsapi
- arunoda 的 meteorhacks:npm
并能掌握过去的基础知识:
在 meteor 服务器启动时,我有:
whatsapi = Meteor.npmRequire('whatsapi');
wa = whatsapi.createAdapter({
msisdn: '....',
username: '....',
password: '....',
ccode: '....'
});
wa.connect(function connected(err) {
if (err) {console.log(err); return;}
console.log('Connected');
wa.login(logged);
});
function logged(err) {
if (err) {console.log(err); return;}
console.log('Logged in');
wa.sendIsOnline();
};
... 这让我可以通过调用
的方法来发送和接收消息wa.sendMessage(recipient, content, function(err, id) {
if (err) {console.log(err.message); return;}
console.log('Server received message %s', id);
});
下面的代码也可以工作,在控制台上记录收到的消息。这位于服务器 Meteor.startup:
内wa.on('receivedMessage', function(message) {
console.log("From: " + message.from);
console.log(message.body);
});
我的问题是,当我尝试将商店 message.from 或 message.body 添加到集合中时,meteor 给我 "Meteor code must always run within a Fiber" 错误")
wa.on('receivedMessage', function(message) {
console.log("From: " + message.from);
console.log(message.body);
Recipients.insert({msgfrom: message.from});
});
求助!
使用 Meteor.bindEnvironment 包装 npm 模块发出的任何回调。它会将回调包装到 'Fiber' 中,因此您可以 运行 Meteor 代码在其中。
例如:
wa.on('receivedMessage', Meteor.bindEnvironment(function(message) {
console.log("From: " + message.from);
console.log(message.body);
Recipients.insert({msgfrom: message.from});
}));
它所做的基本上是将回调中的代码放入 Fiber。