React集成enigma.js初始化WebSocket出现subprotocol '[object Object]'无效错误
问题根因
你报错的直接原因是WebSocket构造函数的入参使用错误:
- WebSocket第二个参数接收的是子协议配置,仅支持字符串、字符串数组两种类型,你传了空对象
{},对象被强制转为字符串时就变成了"[object Object]",正好对应你收到的无效子协议报错。 - enigma.js的
createSocket配置项如果不需要额外自定义子协议,直接传url参数即可,不需要第二个空对象参数。
修复后的代码
async init() { const appId = "133dab5d-8f56-4d40-b3e0-a6b401391bde"; const url = "wss://sense-demo.qlik.com/app/133dab5d-8f56-4d40-b3e0-a6b401391bde"; const session = enigma.create({ schema, // 去掉WebSocket构造函数的第二个空对象参数即可 createSocket: () => new WebSocket(url), }); const global = await session.open(); const app = await global.openDoc(appId); const appLayout = await app.getAppLayout(); console.log(appLayout); }
额外验证点
如果后续需要自定义请求头、身份凭证等配置,直接在WebSocket构造函数的第三个参数(选项参数)中配置即可,不要和第二个子协议参数混淆。
内容的提问来源于stack exchange,提问作者gangata arun
相关产品推荐
相关产品推荐

