socket_bind()函数中的端口参数可以为80还是443?

时间:2018-08-07 10:26:43

标签: javascript php html5 websocket

我不确定是否要问正确的问题。但是请帮助我解决这个问题。

我正在使用PHP和websocket实现实时聊天应用程序。我位于仅允许80和443的防火墙后面,因此我打算仅使用这两个端口。我尝试了两种方法:

首先

我认为应该使用端口80下载网页,但websocket必须使用另一个端口(即443)。

... $port = 443; socket_bind($socket, $host, $port); ...

但是,我收到如下错误消息。

PHP Warning: socket_bind(): unable to bind address [13]: Permission denied in /home/cabox/workspace/a/b/c/server/class.PHPWebSocket.php on line 121

这意味着websocket无法使用443,不是吗?

第二,

根据manual,我删除了$port参数,然后php文件运行无误。

是否暗示HTTP服务器和套接字服务器都使用端口80?

但是在客户端,我看到错误WebSocket connection to 'ws://xxx.com/' failed: Error during WebSocket handshake: Unexpected response code: 200

有什么办法吗?

我希望得到帮助。

1 个答案:

答案 0 :(得分:1)

$ port参数仅是可选参数,因为AF_UNIX协议不使用它。但是,正如我猜想的那样,如果您使用AF_INET协议(请参见socket_create()选项),则必须指定要在套接字绑定中使用的端口。

端口80和443用于HTTP和HTTPS。恐怕如果您不想覆盖它们,则必须在防火墙中打开另一个端口。