描述
服务器端 php7.2 swoole 创建了一个 ws://www.aaa.com:8888
客户端 1 chrome 63 在 http://www.bbb.com/ws.html 下 引用了 websocket-js-1.0.2
客户端 2 IE8 地址同上 这个时候 websocket-js 采用的是 flash 的通信方案
问题: 客户端 1 在 html5 下工作正常 客户端 2 在 flash 下 不能跨域传输
思考方向:经过搜索 发现需要给 flash 跨域的权限( crossdomain.xml )有三种方案
1 在域名根目录下放 crossdomain.xml
2 843 端口 通信传输 xml
3 自定义端口 需要修改 swf 文件
方案 1 貌似只适用于 http ? 总之因为端口被 ws 占用 没办法另开一个 http
方案 3 不想改 swf
但是方案 2 又不知道怎么发?网上的例子大多的 java 的,想问一下有没有人用 php 做过这个东西
有没有具体一点的例子
1
loginv2 OP 自问自答好尴尬啊 ...
解决了问题 所以来分享一下 首先是需要建立两个端口的监听 一个是 ws 的 一个是 843 这里重点是 843 这个 不可以用 websocket 需要用没有封装过的 socket ```php $server843 = new swoole_server("0.0.0.0", 843); $server843->set(array('worker_num' => 1,)); $server843->on('receive', function (swoole_server $server843, $fd, $from_id, $data) { //这里是 crossdomain.xml 的内容 具体根据自己实际情况改 但是注意结尾需要加一个转义的 0 $server843->send($fd, "<cross-domain-policy> <allow-access-from domain=\"*\" to-ports=\"*\" /> </cross-domain-policy>\n\0"); }); $server843->start(); ``` 然后单独启动这个服务 。再启动 ws 那个服务 就可以了 |