我正在尝试连接到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;
答案 0 :(得分:2)
您使用的代码是客户端代码。此代码不会在回调中返回套接字,因为客户端已经知道与其连接的套接字。
您正在订阅套接字服务,但您没有任何代码可以响应从该服务发送的数据。
当crypto compare返回数据时,它会发送“m”事件。所以你需要回应“m”。
一个例子
cryptoCompareSocket.on("m", function(message) {
console.log(message);
});