在Meteor方法中,此.connection始终未定义
我正在尝试为DDPAPI实现一些方法,用于C#远程客户端 现在,我希望能够跟踪连接以实现某种类型的持久会话,为此,我希望能够在连接上使用DDP提供的会话id,例如:在Meteor方法中,此.connection始终未定义,meteor,Meteor,我正在尝试为DDPAPI实现一些方法,用于C#远程客户端 现在,我希望能够跟踪连接以实现某种类型的持久会话,为此,我希望能够在连接上使用DDP提供的会话id,例如: { "msg": "connected", "session": "CmnXKZ34aqSnEqscR" } 阅读文档后,我发现在meteor方法中,我可以使用“this.connection”访问当前连接,但是,我总是得到一个未定义的“this.connection” 它被移除了吗?如果是,我现在如何访问它 PS:我
{
"msg": "connected",
"session": "CmnXKZ34aqSnEqscR"
}
阅读文档后,我发现在meteor方法中,我可以使用“this.connection”访问当前连接,但是,我总是得到一个未定义的“this.connection”
它被移除了吗?如果是,我现在如何访问它
PS:我不想以用户身份登录并访问此.userId,因为我想创建的应用程序不应该登录,而实际上只是获取一个文档id并执行与此相关的工作,包括对其他集合的更改,但所有这些都只涉及此id,我不想每次调用函数时都包含此id,因为,如果任何人都可以发送任何id,这可能会导致安全问题。理想情况下,该应用程序只需简单登录,然后将令牌详细信息与他的“会话”关联起来。github上的C#客户端有一些bug,因为它不完全符合DDP规范。当您向它发送连接和运行呼叫的命令时,它通常会过早地发送“.call”
如果使用服务器端Meteor方法上的this.connection
,则该方法确实有效
您需要确保在知道实际已连接后发送方法调用。这是至少对Meteor 0.8.2有效的方法,我使用了一个名为“.next.js”的文件,强制Meteor使用最新的不受支持的javascript规范,并使用一个包
不知怎么搞砸了。改回默认javascript,现在可以使用了
谢谢:)init.coffee
Meteor.startup ->
# client init
if Meteor.isClient
Meteor.call "init"
方法:咖啡
Meteor.methods
init: ->
console.log @connection.httpHeaders.host
这很容易…从以下方面进行更改:
() => { this.connection; }
致:
从我这里解决问题。基于接受答案中的评论 你在说什么客户?我不确定。我正在使用自己的C#created客户端。我也有一个C++。但是,我目前正在使用普通javascript客户端进行测试。当导航到实际的meteor页面并调用meteor.call时,我在使用开发工具时也会遇到同样的错误。@SilentWarrior你能提供一个最小的复制吗,我在外部大量使用DDP,包括此连接以获取headers@SilentWarrior实际上只有一种情况,Meteor方法将有一个空的
.connection
,当你在Meteor中从服务器端调用Meteor.call时,我有一个带有harmony软件包和next.js文件的应用程序,该.connection按预期工作。我发现在定义方法时使用“=>”很难跟踪错误。我使用=>定义方法,我想这就是原因。使用“this”时,定义方法的正确方式是什么?我在做:()=>{this.connection;}谢谢!我使用的是'methodName':()=>{this.connection;}
,但始终未定义,改为'methodName':function(){this.connection;}
,现在我可以访问此.connection。
function() { this.connection; }