我正在使用websockets进行3D聊天的脚本。您开始聊天的每个小时,然后您必须单击“确定”以获取您的个人资料中的小时。所以我想制作一个脚本,可以检测盒子何时点击好。我可以在chrome开发人员工具上看到,当有一个新的小时时,我会从websocket中转发一条消息。
我想在javascript中执行此操作,因此我加载javascript以及加载网站时。那么我如何获得已经存在的与websockets的连接?
如何将我的javascript与网站一起加载以获得该连接而不是新连接?
答案 0 :(得分:2)
当WebSocket连接由创建它的代码创建时,它存储在Javascript变量中。您需要在创建webSocket连接的脚本中访问该变量。没有其他方法可以得到它。
您可以检查创建webSocket连接的脚本,并查看它存储webSocket对象的位置,以便查看是否可以访问该变量。
您的Javascript可以通过书签或浏览器扩展程序添加到页面中,或者显然可以通过编辑网页的原始来源(尽管我假设您在这种情况下无法执行此操作)。
答案 1 :(得分:0)
我需要访问由外部库创建的 WebSocket,因此我没有用于创建它的实际变量。幸运的是,当 WebSockets 更新时,它们会在 message
上触发一个 window
事件,您可以轻松地连接到该事件:
window.addEventListener('message', messageEventListener, false);
由于可能有多个 WebSocket 打开,您需要比较 origin 属性(它将是套接字连接到的 URI 的域,没有路径)。通过 WebSocket 发送的数据将位于事件的 data
属性中。像这样:
const messageEventListener = (e) => {
if (e.origin === 'https://paygatewaway.example'
&& e.data.status
&& e.data.status === 'paid'
) {
// Handle change
}
};