我是RabbitMQ的新手。我使用PhantomJS并使用JavaScript来做事。现在,我需要将一些结果发送到RabbitMQ,以便使用其他脚本读取它们。我的意思是,我希望PhantomJS与RabbitMQ进行通信。发送一些消息并从队列中读取一些消息。那可能吗?无论如何,PhantomJS可以与RabbitMQ进行通信吗?
答案 0 :(得分:2)
PhantomJS只是另一种浏览器。这正是RabbitMQ Web-Stomp Plugin的用途。它基于SockJS,它提供浏览器和服务器之间的Web套接字连接。如果Web套接字不可用,则存在跨浏览器回退。 PhantomJS支持从版本2开始的Web套接字。
如果您没有open
PhantomJS中的某个页面,则需要使用--local-to-remote-url-access=true
选项运行此页面。我假设sockjs-0.3.js和stomp.js在scripts目录中。
page.injectJs('sockjs-0.3.js');
page.injectJs('stomp.js');
page.evaluate(function(){
var ws = new SockJS('http://127.0.0.1:15674/stomp');
window.client = Stomp.over(ws);
...
});
这必须在页面上下文中运行(在page.evaluate()
内)。这就是client
是全局window
属性的原因,以便您可以通过后续page.evaluate()
调用获取对客户端的引用。您可以使用window.callPhantom()
和page.onCallback
事件处理程序触发从页面上下文到外部的调用。