我对websockets知之甚少,但我知道如何连接到这样:
const CHAT_URL = 'ws://echo.websocket.org/';
但是当网站没有公共websocket API时该怎么办?我怎样才能获得这些数据?
假设我们有这样的网站: 当我打开开发工具,网络选项卡并在那里选择WS和FRAMES时,我可以看到每个毫秒的新数据。是否可以在我的节点或角度项目中获取该数据?
答案 0 :(得分:1)
一切皆有可能,尽管您需要做一些工作来逐个确定每个API的实现。另外请检查使用他们的API不违反网站政策等。
以cryptopia.co.nz
为例,如果我们检查WebSocket请求的URL,我们会看到他们使用ASP.NET的signalr
库作为后端。我们还可以在查询字符串中看到正在传递connectionToken
,这意味着如果我们要成功连接到他们的API,我们需要提供有效的connectionToken
。
查看signalr
,we see that的文档,他们实施了一些安全措施,包括阻止跨域请求。这排除了我们直接从浏览器客户端(即通过Angular)连接到API的能力。此时我们唯一的选择是从Node.js连接到他们的WebSocket API,然后将数据代理到我们自己的浏览器客户端。
你可以看到这是一个非常深的兔子洞。另一个问题是,如果他们在任何时候改变他们的实现,你的应用程序将会中断。总之,可能会有足够的努力连接到私有API,但如果它首先可用,我总是会寻找公共API选项。