Javascript 如何在windows之间通信?

Javascript 如何在windows之间通信?,javascript,jquery,websocket,Javascript,Jquery,Websocket,编辑:这个问题可以总结如下:两个单独的html页面如何在单独的窗口中异步交换信息 对于类项目,我必须构建一个基于web的聊天客户端。教授提供了一台工作服务器 我已经启动并运行了它的一部分——任何连接的用户都可以向服务器发送消息,它将转发给所有连接的用户,并显示在他们的主聊天窗口中,聊天室风格 但是,客户机还需要具有发送/接收私人消息的选项。如果发送或接收到私人消息,将打开一个新窗口,显示仅与该用户通信的聊天界面。客户端将来向该用户发送/接收的任何私人消息都将显示在此窗口中,而不是主聊天室中 我

编辑:这个问题可以总结如下:两个单独的html页面如何在单独的窗口中异步交换信息


对于类项目,我必须构建一个基于web的聊天客户端。教授提供了一台工作服务器

我已经启动并运行了它的一部分——任何连接的用户都可以向服务器发送消息,它将转发给所有连接的用户,并显示在他们的主聊天窗口中,聊天室风格

但是,客户机还需要具有发送/接收私人消息的选项。如果发送或接收到私人消息,将打开一个新窗口,显示仅与该用户通信的聊天界面。客户端将来向该用户发送/接收的任何私人消息都将显示在此窗口中,而不是主聊天室中

我完全不知所措。收到私人消息后,如何打开新窗口,然后继续与该窗口通信?如果通过主窗口的websocket连接从该用户接收到更多私人消息,则必须将其发送到该窗口,如果消息从该窗口发送到该其他用户,则必须通过主窗口的websocket连接进行中继

如果可以做到这一点,如何做到这一点?

返回属于新打开窗口的
窗口
实例。如果在新窗口中打开的地址可以接受地落在中,则可以修改它及其DOM,就像修改当前活动窗口一样

var w,
    someElement;
w = window.open('somepage.html', 'some window name', 'width=300,height=200');
someElement = w.document.getElementById('some-element-id');

我会这样处理:

页面最初启动并使用setTimeOut类型函数对服务器进行AJAX调用,检查所有“公共”消息。当它想要发布消息时,它会执行另一个AJAX调用来发送公共消息

我可能会向服务器添加另一个AJAX调用,询问“是否有我的私人消息?”服务器可以回答“是的,这是来自userid1234的消息”。然后可以使用window.open打开一个名为“FromUserID1234”的窗口。存储该引用(使用ZZBOW的一些答案)。使用该引用,您可以检查将来收到的任何私人消息是否已经打开了私人消息窗口。如果是,忽略它,如果不是,那么创建一个。这也将允许您打开一个私有消息窗口,使用它一段时间,然后关闭它,如果收到来自同一用户的另一个消息,它将只打开另一个窗口

新窗口“FromUserID1234”然后使用AJAX与服务器通信,询问“您还有来自userID1234的消息吗?”。服务器可以用新的响应,也可以发送消息


很抱歉,这本身并不是确切的代码,但这就是我开始定义问题的地方,然后构建通信接口来实现这一切。

使用信号器。它关注你想做什么。快乐编码!:)

请参阅此链接:


您可以使用CSS在同一个窗口中创建自己的虚拟“窗口”。您能详细介绍一下吗?它需要是一个单独的页面实例,一个全新的窗口(或选项卡)。我不知道你的意思。这只是一个替代方案的建议——创建一个新的浏览器窗口对于你试图实现的功能来说似乎有点过时和过分@ZZZBOV的答案看起来像您需要的。var windowObjectReference=window.open(strUrl,strWindowName[,strWindowFeatures]);