如何使用多个发送(请求)实现 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的主要内容,如果未能解决你的问题,请参考以下文章

在html页面中,用js调取websocket,发送多条请求

如何实现令牌到 web api 发送请求? [复制]

如何一次将多个值发送到 Web 服务器 [关闭]

如何在循环中发送多个 SOAP 请求:PHP?

我向 Web 服务发送了 100 多个请求 [重复]

web 实现大量打印