繁体   English   中英

是否可以更改WebSocket连接上的URL请求?

[英]Is it possible to change the URL request on a WebSocket connection?

我正在尝试在已连接的套接字上更改URL请求,但是我不知道该怎么做甚至是否可行。

我正在使用WebSocket APICoinCap

我现在正在做的是关闭连接并使用新参数创建一个新连接。

// 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM