PhantomJS如何通过RabbitMQ进行通信?

时间:2015-03-05 21:29:13

标签: rabbitmq phantomjs

我是RabbitMQ的新手。我使用PhantomJS并使用JavaScript来做事。现在,我需要将一些结果发送到RabbitMQ,以便使用其他脚本读取它们。我的意思是,我希望PhantomJS与RabbitMQ进行通信。发送一些消息并从队列中读取一些消息。那可能吗?无论如何,PhantomJS可以与RabbitMQ进行通信吗?

1 个答案:

答案 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事件处理程序触发从页面上下文到外部的调用。