// on server
Meteor.methods({
'getIP': function () {
return this.connection.clientAddress;
}
});
// on client
Meteor.startup(function() {
Meteor.call('getIP', function (err, res) {
console.log(res); // returns undefined
});
});
进一步挖掘,服务器上的'this.connection'似乎只有3个东西:id,close,onClose,但不是clientAddress。我错过了什么?
其他信息:
答案 0 :(得分:2)
我使用Meteor 0.9.3.1并在Meteor方法中调用this.connection.clientAddress
对我有用。我将客户端IP地址存储为我正在使用的收藏集中的字段。
我确实有一个问题,客户端正在尝试模拟调用并抛出Exception while simulating the effect of invoking... this.connection is undefined
错误。但我发现我的文档正确存储了正确的客户端IP地址。所以解决方法是让客户尝试模拟这个。
在我的Meteor方法中,我刚刚添加了Meteor.isServer
项检查。如果客户端模拟客户端IP为0.0.0.0
:
var ip = "0.0.0.0";
if(Meteor.isServer) {
if(!this.connection.clientAddress)
throw new Meteor.Error(403, "Server Error: You must be connected.");
else
ip = this.connection.clientAddress;
}
// ...store document with ip...
一切都按预期运作。