如何使用多个发送(请求)实现 HTML5 WEB-Socket
Posted
技术标签:
【中文标题】如何使用多个发送(请求)实现 HTML5 WEB-Socket【英文标题】:How to implement HTML5 WEB-Socket with multiple sends (requests) 【发布时间】:2017-12-26 19:54:23 【问题描述】:我有一个网络套接字服务,我需要它来获取多个请求。 我用 url 初始化 web socket,需要发送大约 200 个 json 请求。 所以我的问题是,
最好的方法是什么?
我需要为每个请求单独打开一个网络套接字吗? 代码:
var ws = new WebSocket("wss://api.example.com/api/");
ws.onopen = function()
ws.send(
JSON.stringify(
"method": "getItem",
"params":
"color": "WHITE"
)
);
;
ws.onmessage = function(evt)
var received_msg = evt.data;
console.log(received_msg);
;
所以在这个例子中我需要更多 200 次这个 JSON 请求:
JSON.stringify(
"method": "getItem",
"params":
"color": "WHITE"
)
【问题讨论】:
【参考方案1】:我会考虑添加一个消息队列(这可能是一个简单的数组)并尽可能发送队列中的消息。
即:
ws.queue = []
ws.onmessage = function(evt)
var received_msg = evt.data;
console.log(received_msg);
while(evt.target.queue.length)
evt.target.send(evt.target.queue.pop());
;
ws.onopen = function(evt)
while(evt.target.queue.length)
evt.target.send(evt.target.queue.pop());
ws.queue.push( JSON.stringify(
"method": "getItem",
"params":
"color": "WHITE"
) );
这是一个快速而肮脏的例子,但我确信类似的方法可以奏效。
【讨论】:
以上是关于如何使用多个发送(请求)实现 HTML5 WEB-Socket的主要内容,如果未能解决你的问题,请参考以下文章