2016-09-17 190 views
1

Chrome扩展程序我建立使用DDP,我想连接到从扩展流星服务器弹出窗口中,用户注册,登录和在Chrome扩展

我发现从一个简短的解释Meteor Spotting表示可以使用ddp.js执行此操作,但它描述的项目似乎已经消失。

ddp.js的当前版本使用import语句,其中Chrome对象为。我的理解是这些脚本是为Node.js设计的。我应该如何编辑这些脚本,以便可以按照Meteor Spotting文章中所述在Chrome扩展中使用它们?

另外,是否有任何一个裸机Chrome扩展的例子,通过DPP与一个裸机Meteor服务器连接,我可以用它来获取灵感?

回答

3

我找到了自己的解决方案。这是一个最基本的实现呼叫从一个Chrome扩展流星服务器:

的manifest.json { “manifest_version”:2

, "name": "DDP Test" 
, "version": "0.1" 

, "background": { 
    "scripts": [ 
     "jquery-3.1.0.js" 
    , "meteor-ddp.js" 
    , "meteor.js" 
    , "background.js" 
    ] 
    } 
} 

jQuery的3.1.0.js可发现here
eddfirs流星ddp.js可以发现here

meteor.js(改编自Meteor Spotting

var Meteor 

;(function meteor(){ 
    "use strict" 

    var endpoint = "ws://localhost:3000/websocket" 
    // Use your own endpoint ^^^ 

    Meteor = { 
    call : function(){ 
     var args = [].slice.call(arguments) 
     var methodName = args.shift() 
     var callback = args.pop() 
     var ddp = new MeteorDdp(endpoint) 
     if (!(callback instanceof Function)) { 
     args.push(callback) 
     callback = function (error, data) { 
      console.log("Result of "+methodName+" call:", error, data) 
     } 
     } 

     ddp.connect().done(MeteorCall) 

     function MeteorCall() { 
     console.log('Connected!'); 

     var $deferred = ddp.call(methodName, args) 
     $deferred.done(function (result) { 
      callback(null, result) 
     }) 
     $deferred.fail(function (error) { 
      callback(error) 
     }) 
     } 
    } 
    }; 
})() 

background.js

;(function background(){ 
    "use strict" 

    Meteor.call("test", 1, "two", { three: [4]}) 
    Meteor.call("test", "using", "a", "custom", callback) 

    function callback(error, result) { 
    console.log("Custom callback error:", error, ", Result:", result) 
    } 
})() 

输出在服务器控制台当扩展被加载:

I20160917-19:35:19.352(-4)? test 1 two { three: [ 4 ] } 
I20160917-19:35:19.377(-4)? test using a custom 

输出在检查用于背景视图:

Connected! 
meteor.js:18 Result of test call: null test method activated with arguments {"0":1,"1":"two","2":{"three":[4]}} 
meteor.js:25 Connected! 
background.js:8 Custom callback error: null , Result: test method activated with arguments {"0":"using","1":"a","2":"custom"}