在我正在构建的Chrome扩展程序中,我想从扩展程序弹出窗口连接到Meteor服务器,以进行用户注册,登录和
我从2014年Meteor Spotting发现了一个简短的解释,表明可以使用ddp.js执行此操作,但它描述的项目似乎已经消失。
当前版本的ddp.js使用了import
语句,Chrome会反对这些语句。我的理解是这些脚本是为Node.js设计的。我应如何编辑这些脚本,以便它们可以在Meteor Spotting文章中描述的Chrome扩展程序中使用?
或者,是否有任何一个简单的Chrome扩展程序的示例,它通过DPP与一个简单的Meteor服务器连接,我可以用它作为灵感?
答案 0 :(得分:3)
我找到了自己的解决方案。以下是从Chrome扩展程序调用Meteor服务器的简单实现:
的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 meteor-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
在Inspector中输出背景视图:
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"}