我正在使用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也恰好是空的,应该可以显示一些内容。
最近我做错了什么?
答案 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
});
});