在项目中有需要兼容IE客户端websocket使用的需求,百度了一番发现目前很多都采用github上开源项目https://github.com/gimite/web-socket-js的实现。
项目配置:
服务器jetty9.2
客户端IE8
websocket连接地址:ws://localhost:8082
按照开源项目的配置出现如下错误
这个问题其实在websocket-js的readme中有说明,因为flash的安全策略问题,需要向后台请求安全策略文件,如果服务器对安全策略请求没有响应,那么websocket连接会被关闭。开源项目并没有实现jetty服务器的843端口上的安全策略响应,因此需要自己实现。
建立websocket时,web-socket-js向服务器843端口发送安全策略请求,文件如下
<policy-file-request/>
服务器应该在判断收到请求后返回安全策略文件,文件内容如下:
<?xml version="1.0"?>
<cross-domain-policy>
<site-control permitted-cross-domain-policies="all"/>
<allow-access-from domain="*" to-port