在浏览器和 Node.JS 上使用 TypeScript 运行 编写 WebSocket 客户端
Writing WebSocket client with TypeScript running both on browser and Node.JS
我正在编写一个 typescript 代码,该代码将 运行 在网络浏览器中使用 Node.JS 进行测试。
我的客户端代码如下所示。
import * as WebSocket from 'ws';
export class SomeClient {
constructor(url) {
this.ws = new WebSocket(url);
}
send(data: any) {
this.ws.send(data);
}
}
我使用 mocha/chai 编写单元测试代码没有问题。
但是,尝试捆绑此代码时,browserify 包含所有 'ws' 节点模块,输出文件的大小几乎为 100kb。如果我删除 import 'ws' 语句,捆绑文件大小会缩小到不到 1kb。但是,在这种情况下,Node.JS 测试抱怨 'WebSocket is not defined' 错误。
我认为,这是因为 WebSocket 在 Web 浏览器中是原生支持的,但在 Node.JS 中不支持,并且需要外部 'ws' 模块才能正确 运行。
我怎样才能为网络浏览器制作一个最小尺寸的包,但可以在 Node.JS 中使用???
尝试 isomorphic-ws:
npm i isomorphic-ws -s
npm install --save universal-websocket-client
我遇到了同样的问题,我能找到的最佳解决方案是使用 isomorphic-ws 在我的打字稿 rootDir 中创建一个 decs.d.ts,内容如下
declare module "isomorphic-ws";
然后像这样在 typescript 中使用它:
import { IsoWebSocket } from "isomorphic-ws";
var ws = new IsoWebSocket("wss://echo.websocket.org") as WebSocket;
我正在编写一个 typescript 代码,该代码将 运行 在网络浏览器中使用 Node.JS 进行测试。
我的客户端代码如下所示。
import * as WebSocket from 'ws';
export class SomeClient {
constructor(url) {
this.ws = new WebSocket(url);
}
send(data: any) {
this.ws.send(data);
}
}
我使用 mocha/chai 编写单元测试代码没有问题。
但是,尝试捆绑此代码时,browserify 包含所有 'ws' 节点模块,输出文件的大小几乎为 100kb。如果我删除 import 'ws' 语句,捆绑文件大小会缩小到不到 1kb。但是,在这种情况下,Node.JS 测试抱怨 'WebSocket is not defined' 错误。
我认为,这是因为 WebSocket 在 Web 浏览器中是原生支持的,但在 Node.JS 中不支持,并且需要外部 'ws' 模块才能正确 运行。
我怎样才能为网络浏览器制作一个最小尺寸的包,但可以在 Node.JS 中使用???
尝试 isomorphic-ws:
npm i isomorphic-ws -s
npm install --save universal-websocket-client
我遇到了同样的问题,我能找到的最佳解决方案是使用 isomorphic-ws 在我的打字稿 rootDir 中创建一个 decs.d.ts,内容如下
declare module "isomorphic-ws";
然后像这样在 typescript 中使用它:
import { IsoWebSocket } from "isomorphic-ws";
var ws = new IsoWebSocket("wss://echo.websocket.org") as WebSocket;