繁体   English   中英

websocket 请求与 nodeJS

[英]websocket request with nodeJS

我正在尝试使用 nodeJS 发起 websocket 请求。 我是 WS 的新手,我对此非常坚持,我能找到的所有示例似乎都与构建聊天相同,在每个媒体中一遍又一遍地重复,哈哈,但这并没有帮助我更好地理解。

我有一个提供实时数据(外汇)的 API。 我能够在前端成功订阅实时数据源,并做我想做的事。 顺便说一句,我没有得到任何 CORS 问题这样做,出于某种原因我不明白.... :-o

但是,我想通过我的服务器获取这些实时数据,所以我的 API 密钥没有清楚地显示。

所以,我想向我的服务器发起一个请求; 此请求为外汇数据供应商 API 开辟通道。 然后我打开一个通道从我的服务器接收这些实时数据。 我想到了以下方法,但这不起作用。

var enableWs = require('express-ws');
enableWs(app);
const WebSocket = require('ws');
const WebSocketServer = require('ws').Server;
const URL = 'wss://API_ENDPOINT?api_key=MY_KEY';

app.ws('/ws', function (ws, req) {
  const wss = new WebSocket(URL);
  let msg = { action: 'subscribe', symbol : 'EUR-USD'};

  wss.onopen = (event) => {
    wss.send(JSON.stringify(msg));
  };

  wss.onmessage = function (event) {
    jsonData = JSON.parse(event.data);
    
    // now, i want to send the RT data received in jsonData to another channel so I can display the data on the FE
    const wssReact = new WebSocketServer({ port: 7100 });
    wssReact.send(jsonData);
  }

  wss.onclose = function (event) {
    wss.terminate();
  };
});

在前端,我希望在打开套接字时得到如下结果:

const socket = new WebSocket('ws://localhost:7100');

好的,我想出了如何做我想要实现的目标。 我很接近:-) 现在看起来很明显哈哈。

我从数据提供者传入的 WS 数据不一致,这也是我无法早点找到解决方案的原因之一。

app.ws('/ws', function (ws, req) {
  const wss = new WebSocket(URL);
  let msg = { action: 'subscribe', symbol : 'EUR-USD'};

  wss.onopen = (event) => {
    wss.send(JSON.stringify(msg));
  };

  wss.onmessage = function (event) {
    ws.send(event.data);
  }

  wss.onclose = function (event) {
    wss.terminate();
  };
});

我希望它可以对其他人有任何帮助:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM