ExpressJs - SocketIo.client - 发出不起作用



我正在尝试连接到crypto compare的api websockets以获取加密货币的最新价格。我正在使用expressjs作为我的服务器和socketio连接到crypto compare。但是,登录后connected似乎没有其他事情发生。这是我第一次尝试使用套接字,所以我有点迷茫为什么io.emit函数没有触发任何东西。connect的回调似乎也存在问题,因为socket是未定义的!

为什么emit似乎什么都没做?

我的应用.js文件:

const express  = require('express');
const app      = express();
const clientIo = require('./lib/client-socket/crytpto-compare-socket');
clientIo.connect();
app.disable('x-powered-by');
module.exports = app;

加密比较套接字.js

const io      = require('socket.io-client');
const configs = require('./../config/configs');
const crytpCompareConfigs = configs.get('CRYPTO_COMPARE_API');
const cryptoCompareEndpoint = crytpCompareConfigs.ENDPOINT;
const cryptoCompareSocket = io(cryptoCompareEndpoint, {reconnect: true});
cryptoCompareSocket.on('connect', (socket) => { // socket here is undefined
  console.log('Connected');
  cryptoCompareSocket.emit('SubAdd', { subs: crytpCompareConfigs['LIST_OF_ITEMS']});
});
cryptoCompareSocket.on('SubAdd', (from, msg) => {
  console.log('Hello');
  console.log(from);
  console.log('*******');
  console.log(msg);
});
module.exports = cryptoCompareSocket;

您使用的代码是客户端代码。 此代码不会在回调中返回套接字,因为客户端已经知道与其连接的套接字。

您正在订阅套接字服务,但没有任何代码响应从该服务发送的数据。

当加密比较返回数据时,它会发送"m"事件。 所以你需要回应"m"。

一个例子

cryptoCompareSocket.on("m", function(message) {
     console.log(message);
    });

最新更新