与 'ws://mydomain.com:8084/?peer_id=123' 的 WebSocket 连接失败:连接建立时出错:net::ERR_CONNECTION_TIMED_OUT
WebSocket connection to 'ws://mydomain.com:8084/?peer_id=123' failed: Error in connection establishment: net::ERR_CONNECTION_TIMED_OUT
var ws = new WebSocket('ws://' + server); //server is mydomain.com:8084?peer_id=123
console.log('ws://' + server);
//var self = this;
ws.onopen = function () {
console.log("Opening a connection...");
};
ws.onclose = function (evt) {
is_connected = false;
console.log("Could not listen to the server. The connection is closing");
};
ws.onerror = function (evt) {
console.log("ERR: " + evt.data);
};
以上是从客户端连接套接字服务器的代码。
在服务器上,我正在使用 PHP WebSocket 在后台设置 运行 的套接字服务器
$server = IoServer::factory(
new HttpServer(
new WsServer(
new RatchetGlobalServer()
)
),
8084
);
$server->run();
首先,它在我的本地主机上运行良好,我已经将它部署到我的主机上,它也可以运行。但是,当我切换到另一个 ISP 时它不起作用,onOpen 事件没有触发,它抛出错误并最终关闭。
在我的国家,有四大 ISP 提供商:A、B、C、D
我尝试使用来自其他 ISP(B、C、D)的其他互联网线路,它完全不起作用,但它可以在我的家庭互联网线路(来自 ISP A)上运行。我必须强调该服务器已经位于专用服务器上,不再位于我的本地主机上。
我的同事可以访问我的站点并看到它工作正常(他们使用与我相同的网络和路由器)
是不是我的路由器上的配置只能让它正常工作?我不知道发生了什么。我试图找出它好几天了。
关闭事件带有代码 1006,原因为空:
CloseEvent {}
bubbles: false
cancelBubble: false
cancelable: false
code: 1006
currentTarget: WebSocketdefaultPrevented: false
eventPhase: 0
path: Array[0]
reason: ""returnValue: true
srcElement: WebSockettarget: WebSockettimeStamp: 1438951964550
type: "close"
wasClean: false
__proto__: CloseEvent
错误与本题题目相同
有一个人遇到了和我类似的问题。
Websocket Server, based on socketo.me not accepting connections from shared internet
问题是我使用的8082和8083端口突然被客户端浏览器屏蔽了。超时错误准确反映了使用非 80 (HTTP) 或 443 (SSL) 端口连接到我的 Web 套接字服务器失败的结果。原因可能是防火墙,
防病毒软件或任何 HTTP 代理问题。
关于这个问题,人们注意到的话题其实有很多。
最终,我不得不找出方法来配置我的服务器以将端口 80 的请求反向到两个不同的端口:8080(我的 Apache)和 8083(websocket)。
Ratchet 的官方网站上也提供了对我有用的解决方法
HAProxy
var ws = new WebSocket('ws://' + server); //server is mydomain.com:8084?peer_id=123
console.log('ws://' + server);
//var self = this;
ws.onopen = function () {
console.log("Opening a connection...");
};
ws.onclose = function (evt) {
is_connected = false;
console.log("Could not listen to the server. The connection is closing");
};
ws.onerror = function (evt) {
console.log("ERR: " + evt.data);
};
以上是从客户端连接套接字服务器的代码。
在服务器上,我正在使用 PHP WebSocket 在后台设置 运行 的套接字服务器
$server = IoServer::factory(
new HttpServer(
new WsServer(
new RatchetGlobalServer()
)
),
8084
);
$server->run();
首先,它在我的本地主机上运行良好,我已经将它部署到我的主机上,它也可以运行。但是,当我切换到另一个 ISP 时它不起作用,onOpen 事件没有触发,它抛出错误并最终关闭。
在我的国家,有四大 ISP 提供商:A、B、C、D
我尝试使用来自其他 ISP(B、C、D)的其他互联网线路,它完全不起作用,但它可以在我的家庭互联网线路(来自 ISP A)上运行。我必须强调该服务器已经位于专用服务器上,不再位于我的本地主机上。 我的同事可以访问我的站点并看到它工作正常(他们使用与我相同的网络和路由器)
是不是我的路由器上的配置只能让它正常工作?我不知道发生了什么。我试图找出它好几天了。
关闭事件带有代码 1006,原因为空:
CloseEvent {}
bubbles: false
cancelBubble: false
cancelable: false
code: 1006
currentTarget: WebSocketdefaultPrevented: false
eventPhase: 0
path: Array[0]
reason: ""returnValue: true
srcElement: WebSockettarget: WebSockettimeStamp: 1438951964550
type: "close"
wasClean: false
__proto__: CloseEvent
错误与本题题目相同
有一个人遇到了和我类似的问题。 Websocket Server, based on socketo.me not accepting connections from shared internet
问题是我使用的8082和8083端口突然被客户端浏览器屏蔽了。超时错误准确反映了使用非 80 (HTTP) 或 443 (SSL) 端口连接到我的 Web 套接字服务器失败的结果。原因可能是防火墙, 防病毒软件或任何 HTTP 代理问题。
关于这个问题,人们注意到的话题其实有很多。 最终,我不得不找出方法来配置我的服务器以将端口 80 的请求反向到两个不同的端口:8080(我的 Apache)和 8083(websocket)。
Ratchet 的官方网站上也提供了对我有用的解决方法 HAProxy