如何从一个nodejs服务器向另一个服务器订阅ws websocket?

时间:2020-09-26 13:06:37

标签: node.js oop websocket

我在<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <thead> <tr> <th>Title</th> <th>Duration</th> <th>Date</th> </tr> </thead> <tbody> <tr> <td>Animals</td> <td>6:40</td> <td>2005-12-21</td> </tr> <tr> <td>Deer</td> <td>6:24</td> <td>2014-02-28</td> </tr> <tr> <td>Ghost</td> <td>11:40</td> <td>2012-04-10</td> </tr> <tr> <td>Wagons</td> <td>21:40</td> <td>2007-04-12</td> </tr> </tbody> </table>中有microservice,必须订阅以nodejs编写的ws(不是socket.io)websocket(您可以在此处考虑任何语言),请提供片段或文档以供阅读,或任何其他说明如何执行此操作的功能(不起作用,使用oop类样式)。

在哪里必须订阅类中的消息?语法是什么?

1 个答案:

答案 0 :(得分:0)

我尝试了数百万种方法,但是当在nestjs中的其他服务器上侦听时,必须使用原始的'ws'来实现它。

// -------------------- Packages ------------------

import { InjectQueue } from '@nestjs/bull';
import { Inject, Injectable, Logger } from '@nestjs/common';
import * as WebSocket from 'ws';

// ------------------------------------------------

@Injectable()
export class SocketService {
  // -------------------- LGGER --------------------------

  private logger = new Logger(SocketService.name);

  // ------------------- Filelds and Props ---------------

  private readonly routeForSocket = 'wss://yourSenderAddressMaybeIsC#orJAVA';
  private socketRLC: WebSocket;

  // ------------------- Ctor ---------------

  constructor() {
    this.onRLCSocketClose = this.onRLCSocketClose.bind(this);
    this.onRLCSocketError = this.onRLCSocketError.bind(this);
    this.onRLCSocketOpen = this.onRLCSocketOpen.bind(this);
    this.onRLCSocketMessage = this.onRLCSocketMessage.bind(this);
  }

  // =================== INIT SOCKET  ========================

  public initSocketRLC(rlcToken: string) {
    this.socketRLC = new WebSocket(this.routeForSocket,'token-if-need');
    this.socketRLC.onopen = this.onRLCSocketOpen;
    this.socketRLC.onerror = this.onRLCSocketError;
    this.socketRLC.onmessage = this.onRLCSocketMessage;
    this.socketRLC.onclose = this.onRLCSocketClose;
  }

  // SOCKET Listen On Open --------------------------------------------

  public async onRLCSocketOpen(msg) {
    console.log(msg);
    if (msg.type === 'open') {
      console.log('hellow');
    }
  }

  // SOCKET Listen MESSAGE HANDLER ------------------------------------------

  public async onRLCSocketMessage(msg: any) {
    const msgArr = msg.data.split(',');
    // console.log(msgArr, 'i am messagesssssssssssssssssssssss');
   
  }

  // SOCKET Listen ERROR HANDLER --------------------------------------------

  public onRLCSocketError(error: any)
    console.log(error, 'i am error');
  }

  // SOCKET Listen CLOSE HANDLER --------------------------------------------

  public async onRLCSocketClose(cmp: any) {
    console.log(cmp);
  }

  // SOCKET CLOSE BY FORCE --------------------------------------------------

  public async closeRLC(): Promise<any> {
    this.socketRLC.close();
  }
}