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();
Во-первых, он хорошо работает на моем локальном хосте, я развернул его на своем хосте, он также работает. Тем не менее, он не работает, когда я переключаюсь на другого интернет-провайдера, событие onOpen не срабатывает, оно выдает ошибку и в конце концов заканчивается.
В моей стране есть четыре крупных провайдера ISP: A, B, C, D
Я пытался использовать другие интернет-линии у некоторых других интернет-провайдеров (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, основанный на socketo.me, не принимающий подключения из общего Интернета