问题描述
尝试创建一个网络聊天应用程序,我们从后端获取用户所属的所有频道。后端返回一个包含 twilio 访问令牌和通道名称的对象数组。获得 API 响应后,Javascript 遍历数组并使用以下代码为每个频道创建聊天客户端:
let apiResponse = [
{token: 'abcdefgh',channel_name: 'a'},{token: 'abcdef',channel_name: 'b'},{token: 'abcd',channel_name: 'c'}
];
let createdClients = [];
apiResponse.forEach((item) => {
Chat.create(chatRoomToken)
.then(client => {
// You get the client here which can be pushed into createdClients array
})
}
目前这是按顺序完成的,因为 JS 是单线程的,然后当 promise 被解决时,createdClients
数组被填充。我怎样才能为多个通道并行化 Chat.create(chatRoomToken)
以节省更多时间。有没有人使用网络工作者或服务工作者解决过这个问题?谢谢。
解决方法
这里是 Twilio 开发者布道者。
您只需要一个 Chat 客户端即可与 Chat 服务交互,而不是每个频道一个。使用聊天客户端,您可以load the user's channels with client.getUserChannelDescriptors()
和load individual channels with client.getChannelBySid()
。