Javascript 客户端上的 Websocket 调用超时
Websocket call timeout on Javascript Client
我是第一次使用 websockets,我不确定我做错了什么。由于我的 IP 是动态的,我正在使用以下 websocket 调用服务器端:
$echo = new echoServer("myurl.com","9000");
和以下调用客户端:
socket = new WebSocket("wss://myurl.com:9000");
即使服务器完全未被占用,我也会收到超时错误。有谁知道为什么?我觉得这是一个基本错误
该特定服务器 PHP-Websockets 不支持 wss://
协议(安全连接,类似于 https://
HTTP 流量)。
将连接线改为:
socket = new WebSocket("ws://myurl.com:9000");
或者,如果您需要 TLS 支持,PHP-Websockets 可能不是最适合您的服务器。
我决定不在 PHP-Websockets 中支持 TLS,因为我不知道有任何经过稳健测试、经过战斗强化的 PHP 包可以提供对 OpenSSL 库的访问。 5 分钟前我改变了主意,将使用内置的 PHP OpenSSL 函数实施 TLS,但这需要时间来实施并且需要多个测试人员。不想等就别等
当我根本无法保证时,我不希望人们认为他们的数据是安全的。
另外,不是特别导致失败但仍然是一个问题:在您的服务器端代码中,您应该将服务器对象的实例化更改为:
$echo = new echoServer("0.0.0.0", "9000");
原因是IP地址设置了服务器的监听地址。 “0.0.0.0”的监听地址被翻译成 "listen on all IP addresses that this machine can listen to." 这意味着,除了你自己的 public IP,它还会监听 127.0.0.1,如果你有第二张网卡分配了不同的 IP 地址,您也可以从中接收流量。
然而,由于 PHP 的弱类型,当 socket_bind()
试图将 IP 地址转换为其二进制表示时,却发现了一个字符串,它会默默地将其转换为 0,这相当于IP地址0.0.0.0.
(我以前认为 socket_bind()
正在执行 DNS 查找以获取 IP 地址。我错了。PHP 的类型如此弱,尤其是像我这样的开发人员,是造成许多安全漏洞的原因。)
我是第一次使用 websockets,我不确定我做错了什么。由于我的 IP 是动态的,我正在使用以下 websocket 调用服务器端:
$echo = new echoServer("myurl.com","9000");
和以下调用客户端:
socket = new WebSocket("wss://myurl.com:9000");
即使服务器完全未被占用,我也会收到超时错误。有谁知道为什么?我觉得这是一个基本错误
该特定服务器 PHP-Websockets 不支持 wss://
协议(安全连接,类似于 https://
HTTP 流量)。
将连接线改为:
socket = new WebSocket("ws://myurl.com:9000");
或者,如果您需要 TLS 支持,PHP-Websockets 可能不是最适合您的服务器。
我决定不在 PHP-Websockets 中支持 TLS,因为我不知道有任何经过稳健测试、经过战斗强化的 PHP 包可以提供对 OpenSSL 库的访问。 5 分钟前我改变了主意,将使用内置的 PHP OpenSSL 函数实施 TLS,但这需要时间来实施并且需要多个测试人员。不想等就别等
当我根本无法保证时,我不希望人们认为他们的数据是安全的。
另外,不是特别导致失败但仍然是一个问题:在您的服务器端代码中,您应该将服务器对象的实例化更改为:
$echo = new echoServer("0.0.0.0", "9000");
原因是IP地址设置了服务器的监听地址。 “0.0.0.0”的监听地址被翻译成 "listen on all IP addresses that this machine can listen to." 这意味着,除了你自己的 public IP,它还会监听 127.0.0.1,如果你有第二张网卡分配了不同的 IP 地址,您也可以从中接收流量。
然而,由于 PHP 的弱类型,当 socket_bind()
试图将 IP 地址转换为其二进制表示时,却发现了一个字符串,它会默默地将其转换为 0,这相当于IP地址0.0.0.0.
(我以前认为 socket_bind()
正在执行 DNS 查找以获取 IP 地址。我错了。PHP 的类型如此弱,尤其是像我这样的开发人员,是造成许多安全漏洞的原因。)