在Meteor方法中,此.connection始终未定义

在Meteor方法中,此.connection始终未定义,meteor,Meteor,我正在尝试为DDPAPI实现一些方法,用于C#远程客户端 现在,我希望能够跟踪连接以实现某种类型的持久会话,为此,我希望能够在连接上使用DDP提供的会话id,例如: { "msg": "connected", "session": "CmnXKZ34aqSnEqscR" } 阅读文档后,我发现在meteor方法中,我可以使用“this.connection”访问当前连接,但是,我总是得到一个未定义的“this.connection” 它被移除了吗?如果是,我现在如何访问它 PS:我

我正在尝试为DDPAPI实现一些方法,用于C#远程客户端

现在,我希望能够跟踪连接以实现某种类型的持久会话,为此,我希望能够在连接上使用DDP提供的会话id,例如:

{
   "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; }