我有两个单独的页面,每个页面都打开一个到服务器的Web套接字,一个页面向服务器发送一条消息,是否有其他页面可以接收回复?非常感谢任何帮助。
由于
第一页,连接并等待消息
<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>
答案 0 :(得分:2)
如果第二个页面是由第一个页面创建的,并且两个名称都在同一个域中,则可以使用其名称访问第二个页面中的脚本。
与将信息从iframe传递到其包含的网页完全相同。如果两个页面位于不同的域中,则安全性会阻止此操作,因为这将是XSS攻击的目标。
DC
在您的示例中,页面之间没有通信。从您的评论中我发现您正在尝试实施聊天系统。所以不,他们不能互相交谈。
抱歉,我认为这两个页面都托管在同一个浏览器中。
当您连接到server.php时,您没有连接到同一脚本两次,而是连接到同一脚本的两个独立副本。因此,除非你在服务器php中做一些工作来获取消息并返回它,否则不会传回任何消息
默认情况下,server.php将在30秒后断开连接。所以你需要禁用它。
你要做的事情比你想象的更复杂
DC