代码之家  ›  专栏  ›  技术社区  ›  user9504869

插座io客户端:节点无响应

  •  0
  • user9504869  · 技术社区  · 7 年前

    我正在使用套接字。io客户端创建加密股票代码。这是我的密码。

    var express = require("express");
    var app = express();
    var request = require("request")
    var bodyParser = require("body-parser");
    var methodOverride = require("method-override");
    var socket = require('socket.io-client');
    
    //Other Important stuff
    app.use(bodyParser.urlencoded({extended: true}));
    app.use(express.static(__dirname + '/views/src'));
    app.set('view engine', 'ejs');
    app.use(methodOverride("_method"));
    
    var io = socket("https://coincap.io/");
    
    io.on('connect', function(){
    console.log(io.id); //This displays the ID
    });
    
    //Home Page
    app.get("/", function(req, res) {
          console.log("reached here");
    io.on('connect', function(tradeMsg){
      console.log(io.connected); //Displays nothing
          var crypto = tradeMsg;
          console.log(crypto); //Displays nothing 
          res.render("index.ejs", {crypto:crypto});
        })
    });
    

    现在,当我加载 localHost:3000 页面上,它会显示(“到达此处”),但在那里它不会做任何事情(除了chrome上的加载循环)。我的控制台。日志也碰巧是空的,因为它应该显示一些内容。

    以下是的示例代码 coincap socket

    我最近做错了什么?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Marcos Casagrande    7 年前

    这个 io.on('connect') 在…内 app.get 什么都不做,因为您已经连接到coincap。你错过了 trades 侦听器,您将在其中接收更新。

    您提供的示例是针对客户端的,因此我看到了两种可能的选择:

    (1) 使用github中的示例连接到浏览器上的coincap。

    var socket = io.connect('https://coincap.io');
    
    socket.on('trades', function(tradeMsg) {
        console.log(tradeMsg);
        document.getElementById('trade').innerHTML = JSON.stringify(tradeMsg)
    });
    

    (2) 从服务器上的coincap获取定期更新,并为您的主页提供最新数据,但这不会像第一个选项那样实时。而仅仅将websocket服务器设置为代理coincap套接字没有任何意义。

    const io = socket("https://coincap.io/");
    
    let crypto;
    
    io.on('connect', function() {
        console.log(io.id); //This displays the ID
    });
    
    io.on('trades', function(tradeMsg) {
        // Save latest update
        crypto = tradeMsg;
    });
    
    //Home Page
    app.get("/", function(req, res) {
    
        // Render latest update
        res.render("index.ejs", {
            crypto
        });
    
    });
    
        2
  •  0
  •   Robert Van Sant    7 年前

    您可能需要收听套接字中的“交易”频道。io连接,如示例链接-我希望这有帮助。此外,您还需要一个客户端来连接此定义的通道。

        socket.on('trades', function (tradeMsg) {
                    console.log(tradeMsg);
                    io.emit('updated trades', tradeMsg);
                });