[英]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.