Получение возвращенного сообщения из веб-сокета в другом браузере - PullRequest
1 голос
/ 09 февраля 2011

У меня есть 2 отдельные страницы, каждая открывает веб-сокет для сервера, одна страница отправляет сообщение на сервер, есть ли способ, чтобы другая страница могла получить ответ?Любая помощь очень ценится.

Спасибо

Первая страница, подключается и ждет сообщения

<html>
<head>
<script type="text/javascript" charset="utf-8">
    if("WebSocket" in window) {
        var ws = new WebSocket("ws://localhost:12345/server.php");
    }
    function startSocket() {
        if("WebSocket" in window) {
            ws.onopen = function (event) {
                document.getElementById('status').innerHTML = "open: " + this.readyState;
            }

            ws.onmessage = function (message) {
                alert(message.data);    
            }
        }
    }
</script>

</head>
<body onLoad="startSocket()">
<div id="status">

</div>
<div id="stock">

</div>
</body>
</html>

Вторая страница отправляет сообщение на сервер через веб-scoket

<html>
<script type="text/javascript" charset="utf-8">
    if("WebSocket" in window) {
        var ws = new WebSocket("ws://localhost:12345/server.php");
    }
    function startSocket() {
        if("WebSocket" in window) {
            ws.onopen = function (event) {
                document.getElementById('status').innerHTML = "open: " + this.readyState;
            } 
        }
    }
    function send() {               
        var text = "hello";
        try {
            ws.send(text);
        } catch (exception) {
            alert(exception.Description);
        }
    }
</script>

<body onLoad="startSocket()">
<div id="status"></div>
<div id="stock"></div>
<button onClick="send();">Left!</button>
</body>
</html>

1 Ответ

2 голосов
/ 09 февраля 2011

Если вторая страница создана первой и ей дано имя, и обе они находятся в одном домене, вы можете получить доступ к сценариям на второй странице, используя ее имя.

это то же самое, что и передача информации из фрейма на содержащую его веб-страницу. безопасность предотвращает это, если две страницы находятся в разных доменах, так как это будет целью XSS-атак.

DC

В вашем примере нет связи между страницами. из вашего комментария я вижу, что вы пытаетесь внедрить систему чата. Поэтому они не могут разговаривать друг с другом.

Извините, я думал, что обе страницы были размещены в одном браузере.

при подключении к server.php вы не подключаетесь к одному и тому же сценарию дважды, а к двум независимым копиям одного и того же сценария. так что, если вы не выполните какую-либо работу на сервере php, чтобы получить сообщение и вернуть его, сообщение не будет передано обратно

Также по умолчанию server.php отключится через 30 секунд. так что вам нужно отключить это.

То, что вы пытаетесь сделать, НАМНОГО сложнее, чем вы думаете

DC

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...