根据IANA的专家建议,WebSocket协议默认使用80端口进行常规的WebSocket连接。
如何使我的websocket侦听端口80时,Apache服务器已经在监听这个端口?
当我的WebSocket使用端口12345时,我使其工作,但我不想向每个人开放该端口和IANA建议端口80…但我不知道如何让它在那个端口上工作?
想法# 1
我读过Jabber服务器,你可以使用Apache重定向调用。下面是这个网站上的一个例子:
<VirtualHost *:80>
Servername yourdomain.com
DocumentRoot /var/www
AddDefaultCharset UTF-8
RewriteEngine On
RewriteRule ^/http-bind/ http://jabber.yourdomain.com:5280/http-bind/ [P]
</VirtualHost>
也许我可以用websocket做一些类似的事情…你是怎么想的?
你没有。在我所知道的每一个操作系统中,规则都是一个进程,一个端口。这是有道理的。如果有两个进程监听同一个端口,那么谁来决定应该由哪个进程来处理它呢?您必须在该机器上公开其他端口。
websocket协议使用80端口(HTTP)或443端口(HTTPS)。我们所做的是使用端口80作为我们的web服务器和端口443作为websocket。这可以防止冲突,但仍然遵循标准。
不能。套接字库的基本设计原则是端口号标识网络接口的单个端点。如果Apache或任何其他程序有端口80,那么它属于该程序,并且仅属于该程序。
想想看,如果你要与Apache共享80端口,我该如何选择将消息发送到哪个进程呢?
可以让一个进程监听一个网络接口(比如Apache使用以太网局域网的端口80),另一个进程在另一个接口上使用相同的端口号(比如代理服务器使用无线局域网的端口80)。
我读到Jabber服务器可以使用Apache重定向调用。下面是这个网站上的一个例子:
<VirtualHost *:80>
Servername yourdomain.com
DocumentRoot /var/www
AddDefaultCharset UTF-8
RewriteEngine On
RewriteRule ^/http-bind/ http://jabber.yourdomain.com:5280/http-bind/ [P]
</VirtualHost>
也许我可以用websocket做一些类似的事情…你是怎么想的?