Compare commits
3
Commits
5ba7de1998
...
050de5c2f3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
050de5c2f3 | ||
|
|
52069887f3 | ||
|
|
44d6a073bf |
@@ -19,7 +19,13 @@ import { useIpnSelector } from "../hooks/tsconnect"
|
||||
import { useClient } from "../hooks/useClient"
|
||||
import wasmUrl from "@webnet/tsconnect/main.wasm"
|
||||
|
||||
const workerScriptUrl = new URL("../worker.ts", import.meta.url)
|
||||
const buildWorker = () =>
|
||||
new SharedWorker(
|
||||
/* webpackChunkName: 'tsconnect-worker' */ new URL(
|
||||
"@webnet/tsconnect-worker/worker",
|
||||
import.meta.url,
|
||||
),
|
||||
)
|
||||
|
||||
export const IpnPrepareContext = createContext<{
|
||||
// pre-built parts
|
||||
@@ -105,7 +111,7 @@ export function IpnProvider({
|
||||
)
|
||||
|
||||
const workerClient = useBuildIpnWorker(
|
||||
useWorker && willBuild ? workerScriptUrl : null,
|
||||
useWorker && willBuild ? buildWorker : null,
|
||||
workerConfig,
|
||||
runParams,
|
||||
)
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
import "@webnet/tsconnect-worker/worker"
|
||||
@@ -35,8 +35,19 @@ export function useBuildIpn(
|
||||
return ipn
|
||||
}
|
||||
|
||||
export function useBuildIpnWorker(
|
||||
worker: () => SharedWorker,
|
||||
config?: WorkerConfig | null,
|
||||
runParams?: Parameters<IPN["run"]>[0] | null,
|
||||
): IpnWorkerClient | null
|
||||
export function useBuildIpnWorker(
|
||||
worker: string | URL | null,
|
||||
config?: WorkerConfig | null,
|
||||
runParams?: Parameters<IPN["run"]>[0] | null,
|
||||
workerOptions?: WorkerOptions,
|
||||
): IpnWorkerClient | null
|
||||
export function useBuildIpnWorker(
|
||||
worker: string | URL | null | (() => SharedWorker),
|
||||
config: WorkerConfig | null = null,
|
||||
runParams: Parameters<IPN["run"]>[0] | null = null,
|
||||
workerOptions?: WorkerOptions,
|
||||
@@ -44,8 +55,12 @@ export function useBuildIpnWorker(
|
||||
const clientRef = useRef<IpnWorkerClient | null>(null)
|
||||
const [client, setClient] = useState<IpnWorkerClient | null>(null)
|
||||
const connect = useEffectEvent(
|
||||
(worker: string | URL, config: WorkerConfig, workerOptions: WorkerOptions | undefined) => {
|
||||
const sw = new SharedWorker(worker, workerOptions)
|
||||
(
|
||||
worker: string | URL | (() => SharedWorker),
|
||||
config: WorkerConfig,
|
||||
workerOptions: WorkerOptions | undefined,
|
||||
) => {
|
||||
const sw = typeof worker === "function" ? worker() : new SharedWorker(worker, workerOptions)
|
||||
let cleanedUp = false
|
||||
let activeClient: IpnWorkerClient | null = null
|
||||
IpnWorkerClient.connect(sw.port, config).then((c) => {
|
||||
|
||||
Reference in New Issue
Block a user