javascript - 在另一个浏览器中从网络套接字接收返回的消息

标签 javascript html websocket

我有 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>

第二页通过 web 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>

最佳答案

如果第二个页面由第一个页面创建并指定了名称,并且两者都在同一个域中,则您可以使用其名称访问第二个页面中的脚本。

这与将信息从 iframe 传递到其包含的网页完全相同。如果这两个页面位于不同的域中,安全性会阻止此工作,因为这将成为 XSS 攻击的目标。

直流

在您的示例中,页面之间没有通信。从您的评论中我看到您正在尝试实现聊天系统。所以不,他们不能互相交谈。

抱歉,我认为这两个页面都托管在同一个浏览器中。

当您连接到 server.php 时,您并不是连接到同一脚本两次,而是连接到同一脚本的两个独立副本。所以除非你在服务器 php 中做一些工作来获取消息并返回它,否则不会传回任何消息

默认情况下,server.php 将在 30 秒后断开连接。所以你需要禁用它。

你想做的事情比你想象的要复杂得多

直流

关于javascript - 在另一个浏览器中从网络套接字接收返回的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4942679/

相关文章:

javascript - 为什么某些函数调用在 JavaScript 中称为 "illegal invocations"?

javascript - 如何在 Javascript 中更改音频输入

php - 动态表单、PHP 和 MYSQL

javascript - 无论父级如何,查找相同类型的前一个元素

html - Wrapper布局和div问题

spring-mvc - 在 Spring 中启用 WebSockets 的跨域请求

php - 如何快速确定用户附近是否有多个地点 - Google Places API

javascript - 折叠父节点直到 mouseout 它的子节点

java - Websocket Java EE7 - 连接数

javascript - NodeJS、WebSockets、升级头