【问题标题】:ExpressJs - SocketIo.client - emit not workingExpressJs - SocketIo.client - 发射不工作
【发布时间】:2018-01-23 09:39:28
【问题描述】:

我正在尝试连接到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;

【问题讨论】:

    标签: node.js sockets express socket.io


    【解决方案1】:

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

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

    当加密比较返回数据时,它会发送“m”事件。所以需要回复“m”。

    一个例子

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

    【讨论】:

      猜你喜欢
      • 2011-08-06
      • 2015-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      相关资源
      最近更新 更多