如何控制dva的subscriptions建立的socket链接在获取到一定数据后运行

subscriptions: {
    socketGetMessage({ dispatch }) {
      return getMessage(data => {
        const datajson = JSON.parse(data);
        dispatch({
          type: "notice/fetch_mqtt_add",
          payload: datajson
        });
      });
    }
 }

subscriptions里的方法在app.start()的时候就执行了


let client;
export async function getMessage(action) {client = connect(mqttUrl, {
    clientId: terminalUid,
    ...mqttSetting // 获取用户配置
  });

  client.on("connect", () => {
       console.log("连接:" + client.connected);
  });

  client.on("message", (topic, message, packet) => {
    action(message.toString());
  });
}
    

但是建立socket链接的时候需要的的用户配置参数要额外异步请求一个接口拿到
而subscriptions在dom ready的时候就执行了
有没有什么好的法子能获取到用户setting参数以后再发起socket连接呢

阅读 3.2k
1 个回答

subscriptions中打开一个websocket.
然后在websocketonmessage中触发一个effects就可以了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题