Socket.io-client:NodeJS没有响应

时间:2018-04-01 22:45:01

标签: javascript node.js websocket socket.io

我正在使用Socket.io-client创建加密代码。这是我的代码。

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上的加载圈)。我的console.log也恰好是空的,应该可以显示一些内容。

这是coincap socket

的示例代码

最近我做错了什么?

2 个答案:

答案 0 :(得分:0)

您可能需要在socket.io连接中收听“交易”频道,就像示例链接一样 - 我希望这会有所帮助。您还需要一个客户端在此通道上进行连接。

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

答案 1 :(得分:0)

io.on('connect')app.get绝对没有任何关系,因为你已经连接到了重合。你错过了trades监听器,你将收到更新。

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

1)使用他们的github中的示例连接浏览器上的重合。

var socket = io.connect('https://coincap.io');

socket.on('trades', function(tradeMsg) {
    console.log(tradeMsg);
    document.getElementById('trade').innerHTML = JSON.stringify(tradeMsg)
});

2)从服务器上获取重合的定期更新,并使用最新数据为您的主页提供服务,但这不会像第一个选项那样实时。设置websocket服务器只是为了代表一致的套接字没有任何意义。

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
    });

});