Javascript 如何实现WebSocket与启用SSL的服务器通信?
我正在尝试在客户端“web浏览器”和运行在Windows2008R2上的Apache2.4/PHP5.6服务器之间实现WebSocket通信 假设我的应用程序正在这个URL“HTTPS”上运行Javascript 如何实现WebSocket与启用SSL的服务器通信?,javascript,jquery,ssl,websocket,Javascript,Jquery,Ssl,Websocket,我正在尝试在客户端“web浏览器”和运行在Windows2008R2上的Apache2.4/PHP5.6服务器之间实现WebSocket通信 假设我的应用程序正在这个URL“HTTPS”上运行 https://myApllication.example.com 我不确定在服务器上是否需要安装一些东西才能正常工作 到目前为止,我的代码是这样的 $(function(){ if(!("WebSocket" in window)){ console.log('your bro
https://myApllication.example.com
我不确定在服务器上是否需要安装一些东西才能正常工作
到目前为止,我的代码是这样的
$(function(){
if(!("WebSocket" in window)){
console.log('your browser does not support WebSocket');
} else {
connect();
$('#disconnect').click(function(){
socket.close();
});
}
function connect(){
var socket;
var host = "ws://myApplication.example.com:8000/dev/icws/poll2.php";
try{
var socket = new WebSocket(host, {
protocolVersion: 13,
origin: 'https://www.example.com'
});
message('Socket Status: '+socket.readyState);
socket.onopen = function(){
message('Socket Status: '+socket.readyState+' (open)');
}
socket.onmessage = function(msg){
message('Received: ' + msg.data);
}
socket.onclose = function(){
message('Socket Status: '+ socket.readyState + ' (Closed)');
}
} catch(exception){
message(exception);
}
} //End connect()
function message(msg){
console.log(msg);
}//End message()
});
此代码将在控制台中显示此错误
DOMException [SecurityError: "The operation is insecure."
code: 18
nsresult: 0x80530012
Socket Status: 0 (ready)
Socket Status: 3 (Closed)
Firefox can't establish a connection to the server at wss://myApplication.example.com:8000/dev/icws/poll2.php
下面是我的poll2.php脚本的样子
<?php
header("Content-Type: text/event-stream" . PHP_EOL);
header("Cache-Control: no-cache" . PHP_EOL);
echo "data: {mykey: 'myvalue', eventName: 'eventName'}" . PHP_EOL . PHP_EOL;
?>
到
我不再得到安全性错误,但我在控制台中得到了它
DOMException [SecurityError: "The operation is insecure."
code: 18
nsresult: 0x80530012
Socket Status: 0 (ready)
Socket Status: 3 (Closed)
Firefox can't establish a connection to the server at wss://myApplication.example.com:8000/dev/icws/poll2.php
是什么原因导致无法建立连接?
是否必须打开服务器上的端口8000?您正在尝试在没有TLS的情况下连接WebSocket。将“ws://myApplication.example.com:8000更改为
”wss://myApplication.example.com:8000
。您的问题中没有足够的细节(服务器是什么?)来知道它是否足够(可能不是正确的端口)。@DenysSéguret非常感谢您,我不再了解错误。但在这里,我仍然得到在控制台<代码>Firefox无法在上建立与服务器的连接wss://......我是否必须更改我的php脚本?您正在尝试在没有TLS的情况下连接WebSocket。将“ws://myApplication.example.com:8000更改为”wss://myApplication.example.com:8000
。您的问题中没有足够的细节(服务器是什么?)来知道它是否足够(可能不是正确的端口)。@DenysSéguret非常感谢您,我不再了解错误。但在这里,我仍然得到在控制台<代码>Firefox无法在上建立与服务器的连接wss://......我是否必须更改我的php脚本?