如何配置 WebSocket 服务器以接受安全连接请求
How to Configure WebSocket Server to Accept Secure Connection Request
在应用 ssl 之前(我从 cloudflare 获取)我的网站是通过 http 加载的,我的套接字连接是通过 ws 建立的
它工作正常,连接成功。
conn = new WebSocket('ws://myDomain:8090');
但是当我的网站通过 https 加载时应用 ssl 后,我使用 wss(否则会出错)
conn = new WebSocket('wss://myDomain:8090');
现在它给我错误
WebSocket connection to 'wss://myDomain:8090/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
websocket服务器是在8090端口启动的我也改成9991但是没有用
这是 websocket 服务器的代码
public function handle()
{
$server = IoServer::factory(
new HttpServer(
new WsServer(
new WebSocketController()
)
),
8090
);
$server->run();
}
我没有将 apache 配置为 运行 websocket 服务器来接受安全连接请求。 可能是因为这个我收到了一个错误。这意味着我正在向不安全的 websocket 服务器发送安全连接请求。如果我是对的,你能告诉我如何配置我的 websocket 服务器,以便它可以接受安全连接请求。
我再次告诉您,我正在使用来自 Cloud Flare 的 SSL。 我告诉我我的域,他们为我提供了名称服务器,以将其替换为我现有的名称服务器。
我请你给出一个明确的解决方案来解决这个问题。 我没有使用 nginx,我在 Lampp 上使用 apache。
Cloudflare 不适用于端口 8090
,here 是 cloudflare 支持的端口列表。
也可以尝试 http://sitemeer.com/#https://yourDomain:8090
查看您的服务器和域是否支持 ssl
有人解决了我的问题。所以我在这里发布解决方案以帮助其他人。我犯了两个错误。
- 我正在使用来自 cloudflare 的 SSL,这会导致一些问题。所以我买了一个付费的SSL证书。
- 我没有为 wss 配置我的 websocket 服务器
下面是使用 Ratchet
在 Laravel 中为 wss 配置 websocket 服务器的代码
public function handle()
{
$loop = Factory::create();
$webSock = new SecureServer(
new Server('0.0.0.0:8090', $loop),
$loop,
array(
'local_cert' => '', // path to your cert
'local_pk' => '', // path to your server private key
'allow_self_signed' => TRUE, // Allow self signed certs (should be false
in production)
'verify_peer' => FALSE
)
);
// Ratchet magic
$webServer = new IoServer(
new HttpServer(
new WsServer(
new WebSocketController()
)
),
$webSock
);
$loop->run();
}
在应用 ssl 之前(我从 cloudflare 获取)我的网站是通过 http 加载的,我的套接字连接是通过 ws 建立的 它工作正常,连接成功。
conn = new WebSocket('ws://myDomain:8090');
但是当我的网站通过 https 加载时应用 ssl 后,我使用 wss(否则会出错)
conn = new WebSocket('wss://myDomain:8090');
现在它给我错误
WebSocket connection to 'wss://myDomain:8090/' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
websocket服务器是在8090端口启动的我也改成9991但是没有用
这是 websocket 服务器的代码
public function handle()
{
$server = IoServer::factory(
new HttpServer(
new WsServer(
new WebSocketController()
)
),
8090
);
$server->run();
}
我没有将 apache 配置为 运行 websocket 服务器来接受安全连接请求。 可能是因为这个我收到了一个错误。这意味着我正在向不安全的 websocket 服务器发送安全连接请求。如果我是对的,你能告诉我如何配置我的 websocket 服务器,以便它可以接受安全连接请求。
我再次告诉您,我正在使用来自 Cloud Flare 的 SSL。 我告诉我我的域,他们为我提供了名称服务器,以将其替换为我现有的名称服务器。
我请你给出一个明确的解决方案来解决这个问题。 我没有使用 nginx,我在 Lampp 上使用 apache。
Cloudflare 不适用于端口 8090
,here 是 cloudflare 支持的端口列表。
也可以尝试 http://sitemeer.com/#https://yourDomain:8090
查看您的服务器和域是否支持 ssl
有人解决了我的问题。所以我在这里发布解决方案以帮助其他人。我犯了两个错误。
- 我正在使用来自 cloudflare 的 SSL,这会导致一些问题。所以我买了一个付费的SSL证书。
- 我没有为 wss 配置我的 websocket 服务器
下面是使用 Ratchet
在 Laravel 中为 wss 配置 websocket 服务器的代码public function handle()
{
$loop = Factory::create();
$webSock = new SecureServer(
new Server('0.0.0.0:8090', $loop),
$loop,
array(
'local_cert' => '', // path to your cert
'local_pk' => '', // path to your server private key
'allow_self_signed' => TRUE, // Allow self signed certs (should be false
in production)
'verify_peer' => FALSE
)
);
// Ratchet magic
$webServer = new IoServer(
new HttpServer(
new WsServer(
new WebSocketController()
)
),
$webSock
);
$loop->run();
}