我正在尝试使用Meteor中的SockJS连接到另一个服务,但我无法在meteor客户端或服务器中获得对SockJS的引用。有没有人有一个很好的例子,使用SockJS连接到Meteor的其他服务或流API?
我试图完成这两种方式,但'socket'总是未定义的:
var socket = sockjs.createServer({ sockjs_url: 'http://api.hitbtc.com:8081' });
socket.onmessage = function(msg) {
var data = JSON.parse(msg.data);
console.log("CONNECTED!!" + data)
};
var socket = new SockJS('http://api.hitbtc.com:8081');
socket.onmessage = function(msg) {
var data = JSON.parse(msg.data);
console.log("CONNECTED!!" + data)
};
答案 0 :(得分:1)
尽管流星本身使用了SockJS,它ddp
包内的hidden deeply并没有真正暴露给用户。所以基本上,你有两个选择:
DDP.connect
建立新连接。如果您使用第三方服务,第二种解决方案当然没有意义。由于数据冗余,第一种解决方案感觉很难看,但如果2.
不可接受,我担心它是唯一的出路。
答案 1 :(得分:0)
在服务器中:
执行Npm.require('./')
并观察错误中告知的路径,从中您可以从Meteor的深处指向软件包,对于SockJS,路径(在Meteor的1.10.2版中)为:
Npm.require('./meteor/ddp-server/node_modules/sockjs');
在Sockjs的特定情况下,其用法与Github页面上显示的用法略有不同,如下所示:
const sockjs = Npm.require('./meteor/ddp-server/node_modules/sockjs');
const echo = sockjs.listen(WebApp.httpServer, {prefix: '/echo'});
echo.on('connection', function(conn) {
conn.on ('data', function(message) {
conn.write(message);
});
conn.on('close', function(){});
});
我在这些文件中没有找到sockjs“ client”软件包,因为sockjs-client软件包特定于浏览器。因此,我从CDN下载了提供的“ echo”输出,我在测试环境中使用了“ --exclude-archs web.browser.legacy”,但是从我那里读出的内容中,如果您不使用sockjs-client软件包不要使用此参数。 Sockjs依赖于“ faye-websocket”,该客户端和客户端均设计用于在NodeJ上运行,这是建议。
Ps:我没有在客户端找到等效表格(没有Npm.require)