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

时间:2018-01-22 20:47:14

标签: node.js sockets express socket.io

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

为什么emit似乎没有做任何事情?

我的app.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;

加密 - 比较 - socket.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;

1 个答案:

答案 0 :(得分:2)

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

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

当crypto compare返回数据时,它会发送“m”事件。所以你需要回应“m”。

一个例子

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