apache代理请求 socket.io (巨坑) 用了一天的时间跳出坑来
最近在做一个支付推送,本来调试的时候好好的,然后放上去的时候发现报错了,错误是https页面不允许使用http请求资源,于是我想到了代理请求,服务器用的是Apache 我比较熟悉的是nginx ,但是思想差不多,
于是开始配置,一直配不成功,也按照百度上的要求去配置,都失败了,后面认真思考,开始配置,不料竟然成功了。所以记录一下
讲真的,一定要了解原理,不然光看别人的根本就没有用,懂的原理才能举一反三,创新
废话不多说,直接上配置文件
<VirtualHost *:443>
SSLEngine on
ServerName 域名:443
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
SSLHonorCipherOrder on
SSLCertificateFile "域名证t"
SSLCertificateKeyFile "域名证书"
SSLCertificateChainFile "域名证书tt"
ProxyRequests On
ProxyVia On
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyRequests off
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/socket.io [NC]
RewriteCond %{QUERY_STRING} transport=websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:48080/$1 [P,L]
ProxyPass /socket.io http://127.0.0.1:48080/
ProxyPassReverse /socket.io http://127.0.0.1:48080/
</VirtualHost>
前端代码
<script type="text/javascript">
var socket = io.connect('https:/域名/', {
path:'/socket.io',
secure: true,
transports: ['websocket', 'xhr-polling', 'jsonp-polling']
});
socket.on('connect',function() {
alert("user connect");
console.log("user connect");
});
socket.on('newAlert', function(data) {
alert("receive alert");
console.log("receive alert..." + data.message);
});
socket.on('disconnect',function() {
alert("user disconnect");
console.log("user disconnect");
});
function sendDisconnect() {
socket.disconnect();
}
function sendMessage() {
console.log("send message token");
socket.emit('token', {
token : $('#token').val(),
message : 'message token'
});
}
</script>
有任何问题请联系我 QQ 1647093644