如何在路由中获取客户端 IP
Posted
技术标签:
【中文标题】如何在路由中获取客户端 IP【英文标题】:How to get the client IP inside a Route 【发布时间】:2020-09-27 10:08:27 【问题描述】:我试图在 Iron Router 的路由过程中检索客户的 IP 地址。我有一个服务器端函数(getIP),但是路由内的“waitOn”函数不会等待服务器函数返回:
waitOn: function ()
Meteor.call('getIP', function(error, clientIp)...
我可以强制它等待,还是可以通过其他方式获取 IP?
【问题讨论】:
【参考方案1】:根据文档,waitOn 挂钩必须返回一个处理程序、一个函数或一个数组。它不适合您的原因是客户端上的 Meteor.call 始终是异步的,您必须定义一个回调函数,该函数在方法响应时调用。 鉴于这种性质,您只能使用 Meteor 方法,如果 waitOn 代码支持 Promise,则可以在方法回调中解决。
我看到的唯一方法是:
使用 Meteor.onConnection 挂钩,并将用户的当前 IP 地址存储在用户的配置文件中(Meteor.users 集合) 设置发布整个用户配置文件的全局订阅(因为默认情况下 Meteor.user 仅发布几个默认文档字段)。 在路由waitOn上,查询Meteor.user集合,你会看到当前检测到的那个用户的IP地址我希望这对您有所帮助。
【讨论】:
以上是关于如何在路由中获取客户端 IP的主要内容,如果未能解决你的问题,请参考以下文章
Android如何获取到连接的WIFI无线路由器的所有客户端的MAC地址?