microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
3d97c2a334a6b16ef7dfc654b8b33e23dac3f01a

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/debugger/debuggerWorker.ts

83lines · modeblame

3fb37ad5unknown10 years ago1import * as websocket from "websocket";
2import {ScriptImporter} from "./scriptImporter";
bedf110funknown10 years ago3import {Log} from "../utils/commands/log";
f5ea0577unknown10 years ago4import {Packager} from "./packager";
3fb37ad5unknown10 years ago5
65ee84c9unknown10 years ago6declare var __fbBatchedBridge: any;
3fb37ad5unknown10 years ago7
65ee84c9unknown10 years ago8let DebuggerWebSocket = (<any>websocket).w3cwebsocket;
3fb37ad5unknown10 years ago9
10export class DebuggerWorker {
11private ws: any;
12
13private projectRootPath: string;
14
15constructor(projectRootPath: string) {
16this.projectRootPath = projectRootPath;
17}
18
19private messageHandlers: any = {
f5ea0577unknown10 years ago20"prepareJSRuntime": function(message: any, cb: any) {
bedf110funknown10 years ago21Log.logMessage("React Native worker got prepareJSRuntime");
3fb37ad5unknown10 years ago22cb();
23},
24"executeApplicationScript": (message: any, cb: any) => {
bedf110funknown10 years ago25Log.logMessage("React Native worker got executeApplicationScript");
3fb37ad5unknown10 years ago26/* tslint:disable:forin */
27for (let key in message.inject) {
f5ea0577unknown10 years ago28/* tslint:enable:forin */
3fb37ad5unknown10 years ago29(<any>global)[key] = JSON.parse(message.inject[key]);
30}
31// importScripts(message.url, cb);
32new ScriptImporter(this.projectRootPath).import(message.url).done(() => cb());
33},
f5ea0577unknown10 years ago34"executeBridgeJSCall": function(object: any, cb: any) {
3fb37ad5unknown10 years ago35// Other methods get called on the bridge
36let returnValue: any[][] = [[], [], [], [], []];
37try {
f5ea0577unknown10 years ago38if (typeof __fbBatchedBridge === "object") {
39returnValue = __fbBatchedBridge[object.method].apply(null, object.arguments);
40}
3fb37ad5unknown10 years ago41} finally {
42cb(JSON.stringify(returnValue));
43}
44}
45};
46
47private createSocket() {
3af9a124unknown10 years ago48this.ws = new DebuggerWebSocket(`ws://${Packager.HOST}/debugger-proxy`);
3fb37ad5unknown10 years ago49
50this.ws.onopen = () => {
bedf110funknown10 years ago51Log.logMessage("WebSocket connection opened");
3fb37ad5unknown10 years ago52};
53this.ws.onclose = () => {
bedf110funknown10 years ago54Log.logMessage("WebSocket connection closed");
3fb37ad5unknown10 years ago55setTimeout(() => this.ws = this.createSocket(), 1000);
56};
57
58this.ws.onmessage = (message: any) => {
59let object = JSON.parse(message.data);
60if (!object.method) {
61return;
62}
63
64let handler = this.messageHandlers[object.method];
65if (!handler) {
66handler = this.messageHandlers.executeBridgeJSCall;
67}
68handler(object, (result: any) => {
69let response = JSON.stringify({
70replyID: object.id,
71result: result
72});
73this.ws.send(response);
74});
75};
76
77return this.ws;
78}
79
80public start() {
81this.ws = this.createSocket();
82}
83}