我读到(安全)Websocket使用与HTTP(S)协议相同的端口。然而,我的PHP Websocket服务器接收到来自客户端的加密握手,我正在监听12345端口上的打开连接。
我的系统在非安全的websocket中运行良好,但我需要添加安全功能,我不明白为什么我会收到这些加密握手。由于OSI模型,它对我来说是透明的。。。
如果我将apache配置为激活SSL引擎并侦听12345端口。我将无法再次为我的PHP Websocket服务器使用此端口,因为它将处于"已使用"状态。。。或者我忘了什么。。。
我迷路了:(
编辑:
这是我的安全websocket头(使用wss://
):
Request URL:wss://localhost:12345/
这里是我的简单websocket头(使用ws://
):
Request URL:ws://localhost:12345/
Request Method:GET
Status Code:101 Switching Protocols
Request Headersview source
Connection:Upgrade
Host:localhost:12345
Origin:http://localhost
Sec-WebSocket-Extensions:x-webkit-deflate-frame
Sec-WebSocket-Key:wovBDvKiKdy/+0Y2BQPr9w==
Sec-WebSocket-Version:13
Upgrade:websocket
(Key3):00:00:00:00:00:00:00:00
Response Headersview source
Connection:Upgrade
Sec-WebSocket-Accept:1ao7ngQG4LAa3JxFibyvoocbSAM=
Upgrade:websocket
(Challenge Response):00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00
为什么我在没有安全连接的情况下获得更多?
我读到(安全)Websocket使用的端口与HTTP(S)协议相同
默认情况下,是的,但您可以通过URL覆盖两者中的端口,请考虑:
http://www.example.com:443/
https://www.example.com:8080/
http://www.example.com:12345/
如果其他东西已经在某个特定的端口/地址上侦听,那么你就无法在那里运行第二台服务器——因此,如果你的网络服务器已经在端口443(https)上侦听,你就不能在同一端口上运行单独的websocket服务器。
只需将HTTPS服务器留在443,然后在12345运行ssl-ws服务器。
刚刚看到你的最后一条评论。
SSL不仅仅是监听哪个端口,流量是加密的。如果您想处理wss流量,那么您需要一个支持SSL的服务器。实现这一点的方法多种多样——这取决于您如何实现当前服务器。