【发布时间】:2026-02-11 06:35:01
【问题描述】:
是否可以在使用 Isolate.spawnuri 创建的 Dart 隔离中使用 websockets 形式?
我的理解是,客户端,Isolate.spawnuri 使用 WebWorkers,而 WebWorker 不能使用dart:html (DOM),但是,客户端,websockets 是dart:html 的一部分。所以这是不行的吗?
谢谢
(很难测试,在尝试使用 Dart 编辑器执行此操作时,我没有收到任何错误或信息,生成的隔离是不可见的,也没有抛出任何可见的错误,它只是挂起)
这里有一些代码来测试这个:https://gist.github.com/kgersen/148460d056f498a849ef
【问题讨论】:
-
您的隔离似乎挂起,因为您没有捕获实例化 WebSocket 时抛出的对象。您必须在隔离的 main() 中捕获所有抛出的对象,否则隔离将暂停或终止。如果您想查看错误信息,您必须通过 SendPort 将其发送回主隔离。我的测试表明,在 spawnuri 创建的隔离中使用某些类会导致抛出 UnimplementedError,但如果包括实例化 WebSocket 的 DOM 抛出字符串(SDK 1.6),则使用。
-
是的,添加一个问题:此隔离中未启用 DOM 访问
标签: dart websocket dart-isolates