Jun*_*ior 7 javascript ssl jquery stunnel websocket
我使用Ratchet创建了一个PHP websocket .此Websocket正在8080我的内部服务器的端口上运行10.0.4.160.
我试图从一个启用了SSL"又名使用https协议"的网站连接到它.
当尝试从FireFox浏览器连接到websocket时,我从浏览器中得到安全问题,因为我在安全/非安全连接之间混合.这是我在javascript控制台中看到的错误.
SecurityError:操作不安全.
为了解决安全问题,我创建了一个stunnel代理,允许我接受连接 10.0.4.160:58443并将其连接到端口127.0.0.1:8080.这个安全隧道应该允许我保持与websocket的连接,并绕过浏览器的安全检查.
但是,每次我尝试连接到websocket时都会出错
与'wss://10.0.4.160:58443 /'的WebSocket连接失败:连接建立错误:net :: ERR_TIMED_OUT
这是用于连接websocket的jQuery脚本
<script>
$(function(){
if ("WebSocket" in window)
{
var conn = new WebSocket('wss://10.0.4.160:58443');
conn.onopen = function(e) {
console.log("Connection established!");
showMessage('Connected', 0);
};
conn.onmessage = function(e) {
console.log(e.data);
showMessage(e.data, 1);
};
conn.onclose = function(e) {
console.log(e.code);
console.log(e.reason);
};
conn.onerror = function(e) {
console.log(e);
};
} else {
console.log('Your browser does not support Websocket!');
}
function showMessage(msg, append){
if(append){
$('#status').append('<br>' + msg);
return;
}
$('#status').text(msg);
}
});
</script>
Run Code Online (Sandbox Code Playgroud)
这是我目前的stunnel配置
[websockets]
client = yes
accept = 58443
connect = 8080
verify = 2
CAfile = ca-certs.pem
debug = 7
OCSPaia = yes
Run Code Online (Sandbox Code Playgroud)
如何从浏览器连接到websocket?谢谢
阅读有关 html5 websockets 的更多信息,请访问http://www.html5rocks.com/en/tutorials/websockets/basics/
Socket.io 是一个流行的 Web 套接字库,请访问 www.socket.io 了解更多信息
没有足够的信息来诊断您的问题。请提供服务器日志。
如果您的服务器识别出连接尝试,那么您的问题很可能是握手。您的 JavaScript 没有问题。
额外的信息:
另一种连接类型:(我们将这种类型称为类型 1)
|SERVER(PHP)| <--- CONNECTION --> |SERVER(websocket)|
Run Code Online (Sandbox Code Playgroud)
您正在使用什么:(我们将其称为类型 2)
|BROWSER(client)| <----CONNECTION --> |SERVER(websocket)|
Run Code Online (Sandbox Code Playgroud)
当使用类型 1连接作为类型 2连接时,您的主 Web 服务器将面临溢出的风险,这将导致严重的性能问题。Web 主机如:Godaddy、Hostgator 等将终止淹没其服务器的连接,因为它们被视为 DDOS 攻击。
我不知道棘轮是什么,但是要保持服务器和客户端连接打开,PHP 需要保持打开状态,这永远不是一个好主意。研究使用 C# 或 C++ 等语言创建的服务器。
| 归档时间: |
|
| 查看次数: |
3357 次 |
| 最近记录: |