2012-10-10 27 views
2

对于UI功能,我需要从Windows Azure队列读取并相应地更新UI。从客户端访问Windows Azure队列javascript/jquery

我看到很多node.js的例子,但没有使用纯Javascript或jquery。 (azureQuery接近,但还没有排队的功能,它需要一个Web API交谈)

这是一种混合型的网络应用程序同时使用asp.net和MVC 4.使用MVC 4

产生这种特殊页面

任何建议,将不胜感激。

罗伯托 (PS。能够写入队列也将是不错)

+0

另一种方法是将队列的内容放入blob存储(也许作为json),然后使用Javascript轮询新项目。使用HTTP范围和/或聪明的命名为blob这可能是相当有效的。运行自己的端点当然更复杂,但如果对队列的读取访问至关重要,则可能会产生麻烦。 –

回答

3

这直接是不可能的从浏览器。浏览器中的JavaScript必须遵循同源策略,这意味着JavaScript只能调用当前网页的域名。由于您的网页不会从<account>.queue.windows.net提供,这意味着您的JavaScript将无法在该网域上调用API。 (这在大多数浏览器中是可能的,如果队列服务提供了CORS标题,但它不会)。

您需要托管一个Web端点(可能在您的MVC 4应用程序中),它代理队列消息。您的JavaScript会向您的网络应用发送消息,您的网络应用会将消息放入队列中。

+0

如果您为其创建了共享访问签名,那么您可以将JSONP加入队列吗?你是否真的可以阅读这个消息是另一回事。 –

+0

@RichardAstbury JSONP是服务器从“

0

你可以使用任何支持的语言超过REST接口来访问Windows Azure的队列。使用JavaScript,您可以创建ajax调用来连接Azure存储队列以读取和写入消息。一旦你有了基于JavaScript + Ajax的代码,你只需要使用Azure Queue Storage REST API来执行任何操作。

Here是一个使用JavaScript连接Azure存储队列的示例。您可以修改代码以连接到您的真实Azure存储队列中,它会满足你的需要:

+0

这甚至可以在浏览器中工作吗?同样的来源政策呢? –

1

UPDATE:请参考下面的意见和丢弃这个答案。

您可以尝试获取使用队列的共享访问签名(SAS)的邮件列表。我只是做了一个简单的测试,在这里我使用“读取”权限为队列创建了一个SAS。我得到一个URI是这样的:

youraccount.core.queue.net/queuename?sv=2012-02-12 & ST = 2012-10-11T04%3A31%3A53Z & SE = 2012-10-11T05% 3A31%3A53Z & SP =劳普& SIG = PN4dyOoOIBlJPQbQ%2Bu7jDLyt%2FpIc3k2k1NZTei6q7Cg%3D

使用此我创建了一个URI为偷看消息

youraccount.core.queue.net/queuename/ 消息?SV = 2012-02-12 & st = 2012-10-11T04%3A31%3A53Z & se = 2012-10-11T05%3A31%3A53Z & SP = R & SIG = PN4dyOoOIBlJPQbQ%2Bu7jDLyt%2FpIc3k2k1NZTei6q7Cg%3D & peekonly =真

我然后用于这个URI在我的JavaScript代码和跟踪在Fiddler中请求。我能够看到从Windows Azure存储返回的响应。

+1

你真的从一个服务页面(而不仅仅是一个本地文件)尝试这个吗?我希望浏览器能够阻止这个跨域请求。 – smarx

+0

尽管我在W3 Schools网站上的TryIt编辑器中尝试了代码,但它确实是正确的,所以它很遥远。我可以在Fiddler中看到请求/响应,但在JQuery中给了我一个错误。 –

+2

是的,GET请求不需要CORS预检请求,所以他们只是试图,然后在CORS头文件不回应响应时放弃。 – smarx