在前端拦截来自外部库的 Web 套接字调用?

Posted

技术标签:

【中文标题】在前端拦截来自外部库的 Web 套接字调用?【英文标题】:Intercept web socket call at frontend being made from an external library? 【发布时间】:2020-07-16 15:50:44 【问题描述】:

我有这个要求,在我的 Angular 应用程序中,我有另一个 Angular 模块,比如说,UtilModule,在 imports 部分我的主要 NgModuleUtilModule 是从 node_module 导入的,如下所示:-

import UtilModule from "utillib";

UtilModule 有各种服务,其中之一是 websocket 服务,它在使用window.location + 硬编码字符串值形成的 url 处形成 websocket 连接。

我的主要组件扩展了一个使用这个 websocket 服务的类(也是 UtilModule 的一部分)。

现在我无法更改 websocket 服务正在使用的 url 的值。但我不想指向这个 url,而是想将它指向我的 websocket 后端实际所在的特定 url。

我怎样才能做到这一点?可能是前端本身的某种请求拦截器将其重定向到所需的 url?

【问题讨论】:

【参考方案1】:

图书馆是否直接导出其服务?

没有看到实际的库,我只是在这里猜测......

你可以

    创建一个扩展他们的新服务, 尝试在新的 uri 中更改 uri 然后在您的模块提供商中,您可以使用 useClass 选项将他们的服务与您的服务交换

取决于您使用服务的方式(如果您直接导入它,或者如果库在内部使用它),这可能会或可能不会工作

【讨论】:

您好,感谢您花时间回答。我在服务中找到了一个没有扩展它的方法,因为它是一个单例,我可以使用它在所需的 url 上创建一个新的 websocket 连接。

以上是关于在前端拦截来自外部库的 Web 套接字调用?的主要内容,如果未能解决你的问题,请参考以下文章

PIL 和使用 asyncio 阻塞调用

拦截套接字函数(windows)

如何在浏览器中查看 Web 套接字响应?

路由套接字

如何使用 Python 从 Web 套接字接收数据

是否有来自 HTML 5 的 Web 套接字的 WCF 服务器实现?