收藏
回答

websocket同步问题(解决同时最多发起 5 个 socket 请求限制)?

直接上代码:

var getState = function (url{
  return new Promise(resolve => {
     var ws = wx.connectSocket({
      url: url,
      data: {},
      method'GET',
      success(res) {},
      fail() {}
    });
       ws.onOpen((res) => {
          ws.send({data"发送请求"});
       });
       ws.onMessage((res) => {
         resolve(res);
         ws && ws.close();
       });
  });
 }
// 调用
arrData.forEach(async (item, index) => {
    await getState(url).then((res) => {
       console.log('处理中...' + index);
    });
    console.log('成功处理!' + index);
});


// 错误提示:
处理中...0
成功处理!0
处理中...1
成功处理!1

同时最多发起 5 个 socket 请求,更多请参考文档
Uncaught (in promise) thirdScriptError
{"errMsg":"closeSocket:fail task not found"}
Object


可以同步,但好像关不了socket ?

回答关注问题邀请回答
收藏

3 个回答

  • sxr
    sxr
    星期三 22:32

    确实,我close了也没法开辟超过5个

    星期三 22:32
    有用
    回复
  • 阿国
    阿国
    2020-03-21

    自己解决了问题:不能使用 "forEach" 改用 "for" 就可以了;使用forEach还是会并发执行异步操作。

    2020-03-21
    有用
    回复
  • Geefib
    Geefib
    2020-03-20

    wx.connectSocket 之后会返回一个 socketTask

    在发起链接的时候 connectSocket 需要接收返回的对象,如果监听和关闭

    请查api中SocketTask 相关的api


    SocketTask.close()


    2020-03-20
    有用
    回复 1
    • 阿国
      阿国
      2020-03-20
      @Geefib 代码中已经写了。
      2020-03-20
      回复
登录 后发表内容
问题标签