Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建自动重新连接webSocket类在JavaScript中扩展webSocket_Javascript - Fatal编程技术网

如何创建自动重新连接webSocket类在JavaScript中扩展webSocket

如何创建自动重新连接webSocket类在JavaScript中扩展webSocket,javascript,Javascript,我们可以使用一个函数来实现重新连接。我知道你可以修改关闭功能,例如 let ws = new WebSocket(uri); ws.onclose = () => { ws = new WebSocket(uri); } 但是如果我想使用一个类呢 class AutoWebSocket extends WebSocket { constructor(uri, protocols) { super(uri, protocols); } onclose() {

我们可以使用一个函数来实现重新连接。我知道你可以修改关闭功能,例如

let ws = new WebSocket(uri);
ws.onclose = () => {
  ws = new WebSocket(uri);
}
但是如果我想使用一个类呢

class AutoWebSocket extends WebSocket {
  constructor(uri, protocols) {
   super(uri, protocols);
  }
  onclose() {
    this = new AutoWebSocket(uri, protocols);
  }
}
我犯了以下错误:

分析错误:赋值表达式中的左侧无效


如何解决此问题?

您无法重新分配
,您只能从中读取,因此它在表达式的左侧无效

如果需要重新创建套接字,请使用组合,而不是继承:

 class AuoWebSocket {
   constructor(uri, protocols) {
     this.uri = uri; this.protocols = protocols;
     this.init();         
   }

   init() {
      this.socket = new WebSocket(uri, protocols);

      this.socket.onerror = () => {
        this.init();
      };
   }
 }