![](/img/trans.png)
[英]What are the possible ways to authorize a websocket connection request in Express.io?
[英]Is it possible to change the URL request on a WebSocket connection?
我正在尝试在已连接的套接字上更改URL请求,但是我不知道该怎么做甚至是否可行。
我正在使用WebSocket API和CoinCap 。
我现在正在做的是关闭连接并使用新参数创建一个新连接。
// Create a new WS connection
const webSocketURL = `wss://ws.coincap.io/prices?assets=${loadedKeys}`
// loadedKeys could be a string of one coin (e.g. bitcoin) or an array
// or an array (e.g. bitcoin,ethereum,monero,litecoin), has to be dynamic.
pricesWs = new WebSocket(webSocketURL);
pricesWs.onopen = function () {
console.log(`conected: ${pricesWs.readyState}`)
}
pricesWs.onmessage = function (msg) {
handleUpdateCB(msg.data);
}
// then when I need to receive different coin prices
// I close the connection and reopen a new one.
anotherFunction() {
pricesWs.close();
pricesWs = new WebSocket(aNewWebSocketURL);
}
我尝试使用send()函数将参数作为消息发送但没有成功,我一直接收相同的数据,假设我首先连接并请求比特币,而我想接收比特币和以太坊,所以我尝试了
pricesWs = new WebSocket(`wss://ws.coincap.io/prices?assets=bitcoin);
//then tried
pricesWs.send(bitcoin,ethereum)
这是行不通的,我也尝试过以JSON格式发送,但是我一直在为第一个查询(比特币)获取相同的数据
更新:如果您有兴趣一起查看整个内容,这是该应用程序的Git。
更新2:我创建这支笔是为了使其更容易理解,请注意,该笔是在VueJS上制成的,但这并不重要。 重要的部分是第60行JS面板
有什么理由要切换URL?
根据硬币上限文档,您可以一次请求有关多种加密货币的信息。 这不是您的选择吗?
通常,您应该避免打开和关闭与套接字的连接,因为尽管有很小的延迟,但是延迟很小。 使连接保持打开状态会更好,因为如果对您感兴趣的任何货币的价格进行了更改,系统都会通知您。
原始问题的答案“是否可以更改Web套接字连接的URL?” 没有! 您无法更改URL,但是可以根据需要创建任意数量的连接。 在您的情况下,您正在关闭连接并立即打开它,但是在注释中,我注意到您提到它是基于用户交互的。 您可以仅为用户请求时所关注的货币打开连接,并保持连接处于打开状态,直到用户再次切换货币为止,因为此时您可能会切换到另一种货币。
我也同意@Taylor Spark,您也可以隐藏dom,以免用户不关心货币,并渲染他们感兴趣的货币。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.