Не удается установить соединение с сервером по адресу ws: // localhost: 8000 / socket / server / startDaemon.php. var socket = новый WebSocket (хост);

Я использую javascript для подключения веб-сокета:

<script>
    var socket;  
    var host = "ws://localhost:8000/socket/server/startDaemon.php";  
    var socket = new WebSocket(host);  
</script>

Получил ошибку:

Не удается установить соединение с сервером на

var host = "ws://localhost:8000/socket/server/startDaemon.php";
var socket = new WebSocket(host);

Как я могу решить эту проблему?

ПРИМЕЧАНИЕ. Я включил веб-сокет в Mozilla для поддержки приложения веб-сокета. и когда я запускаю в Chrome, я получаю ошибку:

   can't establish a connection to the server at ws://localhost:8000/socket/server/startDaemon.php. var socket = new WebSocket(host);

person Sanjeev Kumar Jha    schedule 30.05.2011    source источник
comment
Вы пробовали запустить startDaemon.php из cli? и startDaemon.php должен содержать тот, который слушает порт 8000.   -  person Sujeet    schedule 08.06.2011
comment
сначала вы разделяете код на стороне клиента и на стороне сервера. :)   -  person Sujeet    schedule 08.06.2011


Ответы (4)


По всей видимости, в firefox 4 веб-сокеты отключены из-за уязвимостей. Цитата из этой статьи:

WebSocket отключен в Firefox 4

Недавние открытия показали, что протокол, с которым работает Websocket, уязвим для атак. Адам Барт продемонстрировал несколько серьезных атак на протокол, который может быть использован злоумышленником для отравления кешей, находящихся между браузером и Интернетом.

person Ibu    schedule 02.06.2011
comment
Браузер не проблема, я включил веб-сокет в firefox. Может быть проблема в порту или сокете. - person Sanjeev Kumar Jha; 08.06.2011

Я решил свою ошибку, выполнив код по этой ссылке

http://www.flynsarmy.com/2010/05/php-web-socket-chat-application/ и создал файл socketWebSocketTrigger.class.php для ответного сообщения, где код как

class socketWebSocketTrigger
{   

        function responseMessage($param)
        {
            $a = 'Unknown parameter';

            if($param == 'age'){
                $a = "Oh dear, I'm 152";
            }

            if($param == 'hello'){
                $a = 'hello, how are you?';
            }

            if($param == 'name'){
                $a = 'my name is Mr. websocket';
            }

            if($param == 'today'){
                $a = date('Y-m-d');
            }

            if($param == 'hi'){
                $a = 'hi there';
            }

            return $a;

        }

}

и добавлен код в функцию отправки 'WebSocketServer.php' для вызова функции 'responseMessage', которая отправляет сообщение запроса ответа

 public function send($client, $msg){
        $this->say("> ".$msg);
        $messageRequest = json_decode($msg,true);

            // $action=$messageRequest[0];
            $action = 'responseMessage';
            $param  = $messageRequest[1]['data'];
        if( method_exists('socketWebSocketTrigger',$action) ){
                                $response = socketWebSocketTrigger::$action($param);
                            }
            $msg = json_encode(
                array(                      
                'message',
                    array('data' => $response)
                )
            );

            $msg = $this->wrap($msg);

        socket_write($client, $msg, strlen($msg));
    }

он отлично работает.

person Sanjeev Kumar Jha    schedule 08.06.2011
comment
Извините, но где вы используете новый веб-сокет в этом коде? - person Ibu; 09.06.2011
comment
Пожалуйста, посмотрите один раз ссылку выше, из которой я взял код и запустил сначала server.php из командной строки, затем запустите индексный файл. Вы можете получить результат. - person Sanjeev Kumar Jha; 09.06.2011

Вы пытаетесь запустить клиент в Firefox? Согласно документации:

По состоянию на 10 февраля единственными браузерами, поддерживающими веб-сокеты, являются Google Chrome и Webkit Nightlies. Загрузите его здесь http://www.google.com/chrome

Попробуйте запустить его в Chrome и посмотрите, сработает ли это для вас.

person King Skippus    schedule 02.06.2011

Во-первых, ваша ошибка заключается в использовании функции php с javascript require_once 'WebSocket.php';, а во-вторых, просмотрите руководство, как показано по ссылке ниже.

http://net.tutsplus.com/tutorials/javascript-ajax/start-using-html5-websockets-today/

работает нормально.

Спасибо,

person Sujeet    schedule 08.06.2011
comment
Я исправил это, но этот пакет для websocket не работает в моей системе. Вы получали сообщение при отправке сообщения запроса в чате? Я все еще сталкиваюсь с этой ошибкой. заранее спасибо. - person Sanjeev Kumar Jha; 08.06.2011