我们服务器的ip是58.211.6.178,内网也打通了,ip是192.168.0.178
服务器由于托管在机房,有防火墙。
我叫机房把9090、90、2345、2346、2347等端口都开放了。
php中 gateway 进程,用了9090端口
$gateway = new Gateway("Websocket://0.0.0.0:9090");
服务注册地址,用了90端口
$register = new Register('text://0.0.0.0:90');
内部通讯起始端口,这个不明白是什么意思,默认给了2345,因为我的端口2345是连续的
html5页面中,申明的时候,用localhost是无法握手的,但是用真实ip可以
var socket = new WebSocket('ws://localhost:9090');
//无法连 failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
var socket = new WebSocket('ws://127.0.0.1:9090');
//无法连 failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED
//var socket = new WebSocket('ws://0.0.0.0:9090');
//无法连
var socket = new WebSocket('ws://58.211.6.178:9090');
//可以连
//var socket = new WebSocket('ws://192.168.0.178:9090');
//无法连 failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
现在我在想为什么127.0.0.1和localhost都无法连接。
有可能是防火墙问题,可以临时关闭防火墙试下。
还有new Gateway('websocket://0.0.0.0:9090'); 内网外网本机才能都可以连,如果是new Gateway('websocket://58.211.6.178:9090');那么只能通过58.211.6.178去连,其它IP包括localhost 和127.0.0.1都连不了。
start_gateway.php改动后要restart才能生效。
自身的防火墙好关,但是机房还有硬防。我以为0.0.0.0跟机房防火墙没关系的。那我叫机房把0.0.0.0也开通一下再试试。