我有一个基于浏览器的应用程序,需要使用JavaScript通过套接字连接与客户端计算机上运行的另一个服务进行通信。
我需要在套接字上来回发送和解析XML数据。
由于跨域安全性限制,我无法使用Flash路径,即运行在套接字上的服务无法被修改以支持Flash的跨域安全性。
那么,我有哪些纯JS解决方案可供选择?
我有一个基于浏览器的应用程序,需要使用JavaScript通过套接字连接与客户端计算机上运行的另一个服务进行通信。
我需要在套接字上来回发送和解析XML数据。
由于跨域安全性限制,我无法使用Flash路径,即运行在套接字上的服务无法被修改以支持Flash的跨域安全性。
那么,我有哪些纯JS解决方案可供选择?
你面临两个主要问题:
虽然有例外情况,但可用的例外情况可能与您需要的不完全匹配。以下是一些可能性:
在您自己的服务器上设置某种代理,代表您的Web应用程序连接回具有XML服务的机器。
如果您可以在某种程度上控制客户端机器,则可以在其上运行服务器,该服务器可以将XML嵌入JSONP格式的http响应中,您可以通过添加简单的脚本标记来访问它,并使用脚本标记发送消息请求包含您的数据编码的URL。
如果您所说的“socket”是指HTTP连接,则有多种选择,其中一种是向HTTP添加Access-Control-Allow-Origin头,然后您可以在最新的浏览器中使用普通的XMLHttpRequests进行获取和发布。
file:///
提供,并且它可以与localhost
进行通信(也许!但未经测试)。基于套接字的交互选项受限于支持此类实时功能的插件。这些选项通常分为Flash、Java和Silverlight。除了Java之外,如果我没记错的话,所有这些选项都将有类似的策略要求。
如果您控制自己的服务器,可以创建一个套接字服务来代理请求到最终目的地。或者,根据交互方式,您可以使用标准的Ajax-style请求,并在服务器端代码上进行套接字交互。如果您不需要持久连接,则通过服务器进行套接字交互是最好的选择。