使用TypeScript编写WebSocket客户端,在浏览器和Node.JS上运行

时间:2018-02-01 02:48:37

标签: node.js typescript webpack websocket browserify

我正在编写一个可在网络浏览器中运行的打字稿代码,并将使用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。如果我删除了导入'ws'语句,则bundle文件大小缩小不到1kb。但是,在这种情况下,Node.JS测试抱怨'WebSocket未定义'错误。

我认为,这是因为WebSocket本身支持Web浏览器,但Node.JS不支持,外部'ws'模块需要正常运行。

如何制作具有最小尺寸的网络浏览器,但可以在Node.JS中使用

1 个答案:

答案 0 :(得分:1)

尝试isomorphic-ws

npm i isomorphic-ws -s

universal-websocket-client

npm install --save universal-websocket-client