HTML5 Websocket работает только на локальном хосте

Я следовал учебному руководству по HTML5 Websocket на веб-сайте ниже:

http: //net.tutsplus. 1. на стороне клиента, почему websocket работает только на "ws: // localhost: 8080 / daemon.php", а не на "ws: //218.175.192.160: 8080 / daemon.php"?

2. почему работает socket_bind ($ socket, "127.0.0.1", 8080), но socket_bind ($ socket, "218.175.192.160", 8080) происходит ошибка? система напоминает «невозможно связать адрес [0]: запрошенный адрес недопустим в своем контексте». Я уверен, что IP-адрес принадлежит моему серверу.

Пожалуйста, помогите, спасибо.

Я выяснил причину ошибки: связывание неправильного адреса, потому что я использовал маршрутизатор, даже если я установил NAT служба на маршрутизаторе, но я забыл, что адрес «218.175.192.160» относится к интерфейсу маршрутизатора, а не к моей серверной машине.

адрес серверной машины должен соответствовать типу локального адреса, например: «192.168.1.2 ", который действительно находится на интерфейсе локальной сети.

извините, что забыл основные настройки сети :(, надеюсь, этот пост поможет новичку в сети, как я, спасибо ~: )

13
задан ssac 16 August 2010 в 10:22
поделиться

3 ответа

У меня тоже была такая проблема.

Проблема в том, что вы, скорее всего, имеете в виду IP-адрес вашего МАРШРУТИЗАТОРА. Что вам нужно сделать, это обратиться к IP-адресу вашего КОМПЬЮТЕРА.

Это работает для локального хоста, потому что локальный хост указывает на ваш индивидуальный компьютер, а не на ваш маршрутизатор.

1
ответ дан 2 December 2019 в 02:05
поделиться

Я считаю, что одна и та же политика происхождения применяется как к веб-сокетам, так и к портам сервера, поэтому и клиент, и сервер должны совпадать, иначе соединение не будет установлено.

В вашем примере вы использовали:

http://218.175.192.160:8080/client.html
ws://218.175.192.160/daemon.php

Я не уверен, что это была просто опечатка, но это должна быть

http://218.175.192.160:8080/client.html
ws://218.175.192.160:8080/daemon.php
2
ответ дан 2 December 2019 в 02:05
поделиться

Вы все еще используете 'localhost' для инициализации вашего PHP-сервера таким образом?:

public function __construct($host='localhost',$port=8000,$max=100)  

Если вы сделаете это, то сервер будет связываться только с интерфейсом localhost. Даже если вы правильно обслуживаете файл из Apache, похоже, что код phpwebsockets все еще необходимо настроить для внешнего IP-адреса.

1
ответ дан 2 December 2019 в 02:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: